目錄python
1、變量json
1.概述api
Variables are used to store information to be referenced(引用)and manipulated(操做) in a computer program.數組
2.聲明網絡
(1)命名規則app
(2)定義函數
name1 = 'Lu' name2 = name1 name1 = 'MJJ' print(name1, name2) -->: MJJ Lu
(3)刪除測試
name1 = 'Lu' del name1 print(name1) -->: NameError: name 'name1' is not defined
變量的生命週期:無指向時,纔會在內存中被回收。編碼
2、數據類型url
1.數字
(1)分類
Python 支持三種不一樣的數值類型:
(2)類型轉換
(3)運算
不一樣類型的數混合運算時會將整數轉換爲浮點數。
7 // 2=3, 7.0 // 2=3.0,7 // 2.0=3.0
在交互模式中,最後被輸出的表達式結果被賦值給變量 "_"。「_」應該爲只讀變量。
(4)數學函數
(5)隨機數函數
2.字符串
(1)切片,索引,拼接
str[a:b],str[a:b:c]
萬惡的字符串拼接:
python中的字符串在C語言中體現爲是一個字符數組,每次建立字符串時候須要在內存中開闢一塊連續的空,而且一旦須要修改字符串的話,就須要再次開闢空間,萬惡的+號每出現一次就會在內從中從新開闢一塊空間。
字符串是一種不可變數據類型,不能夠改變。能夠用截取的方式,拼接的方式從新組合成新的字符串。
str1[0] = "H"
TypeError: 'str' object does not support item assignment.
(2)轉義
a = "ajkfhajkfhkjahfkahfkhakfhkdafafafaddafafdafafadfafafafafafadefgg" \
"hfakjfhkah"
print(str1 + "\\")print("\'" + str1 + "\'")
(3)運算
print(r"hello \' word!")
print("hello \' word!")
(4)格式化輸出
%和format()函數使用、f-string字面量格式化字符串,是新的格式化字符串的語法。
(5)字符串操做
參數:width,寬度;fillchar,能且只能爲一個字符。
注意:
a、若是 width 小於字符串寬度直接返回字符串,不會截斷;
b、fillchar 只能是單個字符。
str1 ='python' * 3 print(str1.count('p')) print(str1.count('p', 1)) # 包含起始位置 print(str1.count('p', 1, -6)) # 不包含結束位置 -->: 3 2 1
參數:seq,元組、列表、字典、字符串。字典只能鏈接鍵值key。
str1 = '\t' str2 = 'python' list1 = [i*2 for i in str2] print(str1.join(str2)) print(str1.join(list1)) -->: p y t h o n pp yy tt hh oo nn
參數:str,分隔符,默認爲全部的空字符,包括空格、換行(\n)、製表符(\t)等;num,分割次數。默認爲 -1, 即分隔全部,分割爲 num+1 個子字符串。
返回值:元素爲字符串的列表。
爬蟲時,圖片名獲取:
url_str = "http://www.baidu.com/python/image/123456.jpg" print(url_str.split('/')[-1]) -->: 123456.jpg
注意:
a、該方法只能刪除開頭或是結尾的字符,不能刪除中間部分的字符。
b、若是不帶參數,默認是清除兩邊的空白符,例如:/n, /r, /t, ' '等
str1 = '\tpython\t' * 3 print(str1.strip()) -->: python python python
c、帶有參數的時候,這個參數能夠理解一個要刪除的字符的列表,刪除多個字符時,只要頭尾有對應其中的某個字符即 刪除,不考慮順序,直到遇到第一個不包含在其中的字符爲止。
str1 = 'a111123\t132231b213321312==3213122132*31123132' print(str1.strip('123ab\t')) # 等價於 for i in str1: if i in '123ab\t': str1 = str1.strip(i) -->: ==3213122132*
3.列表
(1)基況
列表元素類型能夠不一致,和C數組不同(相似ndarray)。列表元素能夠修改,因此作列表有關操做時,要注意原列表的元素是否被更改了(深淺拷貝!!!)。
list1 = [i for i in range(10)] list2 = list1 # list2 = list1.copy() print(list1, list2) list2[0] = 100 print(list1, list2) -->: [0, 1, 2, 3, 4, 5, 6, 7, 8, 9] [0, 1, 2, 3, 4, 5, 6, 7, 8, 9] [100, 1, 2, 3, 4, 5, 6, 7, 8, 9] [100, 1, 2, 3, 4, 5, 6, 7, 8, 9]
(2)基操
(3)列表嵌套
不支持花切,只能分層操做。
list1 = [ [1, 2, 3], [4, 5, 6], [7, 8, 9] ] print(list1[1:][:]) print(list1[[0], [0]]) -->: TypeError: list indices must be integers or slices, not tuple [[4, 5, 6], [7, 8, 9]]
(4)常見內建函數和列表方法
內建函數:
元素所有爲數字類型時,直接根據值的大小比較。當其中的元素所有爲字符串類型(string)時,則比較的是每一個字符串元素的第一個字符的 ASCII 的大小。
str1 = "python" tup1 = ('1', '2', '3') dict1 = {'a': 1, 'b': 2, 'c': 3} print(list(str1)) # 每一個字符循環一遍,相似列表生成式 print(list(tup1)) print(list(dict1)) # 默認爲KEY print(list(dict1.values())) -->: ['p', 'y', 't', 'h', 'o', 'n'] ['1', '2', '3'] ['a', 'b', 'c'] [1, 2, 3]
list1 = [i for i in range(10)] for index, value in enumerate(list1): print(index, value) -->: 0 0 1 1 2 2 3 3 4 4 5 5 6 6 7 7 8 8 9 9
list對象的方法:
list1 = [i for i in range(10)] list2 = list1.append(10) print(list2, type(list2), list1) -->: None <class 'NoneType'> [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10]
參數:
seq-- 能夠是列表、元組、集合、字典,若爲字典,則僅會將鍵(key)做爲元素依次添加至原列表的末尾。
參數:
x-- 查找的對象。
start-- 可選,查找的起始位置。
end-- 可選,查找的結束位置。
刪除重複元素,不要用由前到後for循環。由於刪除一個後,後面的元素迴向前補齊,而循環下標仍是會正常加1,會致使後面的循環下標與元素不對應。
方法一:從後往前[::-1]循環開始刪除。
方法二:用Python原生態方法,現用set()列表變成集合(集合惟一性),再用list()將集合變成列表。
list1 = [1, 2, 'a', 'l', 'a', 1, 1, 2, 3] set1 = set(list1) list1 = list(set1) print(list1) -->: [1, 2, 3, 'l', 'a']
4.元組
(1)基況
與列表相似,但元素不能修改,又叫只讀列表。和str同樣,操做都會生成新的元組。
(2)基操
(3)常見內建函數及方法
函數:
方法:(只有兩個,由於元組不可變)
(4)元組注意事項
a、元組中只包含一個元素時,須要在元素後面添加逗號,不然括號會被看成運算符使用:
Tuple1 =(3)--》<class 'int'>Tuple = (3,)--》<class 'tuple'>
b、tuple的元素值是不容許刪除的,但咱們可使用del語句來刪除整個元組。
c、tuple中的「不變」,指的是「指向不變」,可是指向裏面的內容是能夠變的。
tuple1 = ([1, 2, 3, 9, 5], [1, 1, 2, 3], 100) tuple1[0][0] = 100 print(tuple1) -->: ([100, 2, 3, 9, 5], [1, 1, 2, 3], 100)
5.字典
(1)基況
字典是另外一種可變容器模型,且可存儲任意類型對象。key-value鍵值對形式。
(2)鍵和值
(3)常見內建函數和方法
函數:
方法:
dict1 = {'name': ['lu', 'mjj'], 'age': [18, 16], 'sex': ['man', 'wom']} dict2 = dict1.copy() # 深拷貝父對象(一級目錄),子對象(二級目錄)不拷貝,仍是引用 dict2['name'][0] = 'LU__' # 子對象爲引用 dict2['age'] = [100, 16] # 父對象爲拷貝 print(dict2) print(dict1) -->: {'name': ['LU__', 'mjj'], 'age': [100, 16], 'sex': ['man', 'wom']} {'name': ['LU__', 'mjj'], 'age': [18, 16], 'sex': ['man', 'wom']}
深拷貝須要用到copy模塊的deepcopy()函數,copy.deepcopy(dict)
參數:
seq,序列中的元素爲字典的鍵值
value,默認爲None。
dict1 = {'name': ['lu', 'mjj'], 'age': [18, 16], 'sex': ['man', 'wom']} dict2 = dict1.fromkeys('NAME') dict3 = dict.fromkeys([1, 2, 3], [10, 10]) print(dict2) print(dict3) print(dict1) -->: {'N': None, 'A': None, 'M': None, 'E': None} {1: [10, 10], 2: [10, 10], 3: [10, 10]} {'name': ['lu', 'mjj'], 'age': [18, 16], 'sex': ['man', 'wom']}
dict1 = {'name': ['lu', 'mjj'], 'age': [18, 16], 'sex': ['man', 'wom']} dict1_item = dict1.items() print(dict1_item) print(type(dict1_item)) print(list(dict1_item)) print(list(dict1)) # 只獲得鍵值列表 for i, j in dict1_item: print(i, j) -->: dict_items([('name', ['lu', 'mjj']), ('age', [18, 16]), ('sex', ['man', 'wom'])]) <class 'dict_items'> [('name', ['lu', 'mjj']), ('age', [18, 16]), ('sex', ['man', 'wom'])] ['name', 'age', 'sex'] name ['lu', 'mjj'] age [18, 16] sex ['man', 'wom']
dict1 = {'name': ['lu', 'mjj'], 'age': [18, 16], 'sex': ['man', 'wom']} for i in dict1.keys(): print(i)
dict1 = {'name': ['lu', 'mjj'], 'age': [18, 16], 'sex': ['man', 'wom']} print(dict1.setdefault('name')) print(dict1.setdefault('birthday', ['1995-8-6', '1995-3-9'])) print(dict1) -->: ['lu', 'mjj'] ['1995-8-6', '1995-3-9'] {'name': ['lu', 'mjj'], 'age': [18, 16], 'sex': ['man', 'wom'], 'birthday': ['1995-8-6', '1995-3-9']}
dict1 = {'name': ['lu', 'mjj'], 'age': [18, 16], 'sex': ['man', 'wom']} dict2 = {'birthday': ['1995-8-6', '1995-3-9']} print(dict1.update(dict2)) print(dict1) -->: None {'name': ['lu', 'mjj'], 'age': [18, 16], 'sex': ['man', 'wom'], 'birthday': ['1995-8-6', '1995-3-9']}
6.集合
集合(set)是一個無序的不重複元素序列。兩個重要做用:
去重:把列表變成集合便可
關係測試:測試兩組數據以前的交集、差集、並集等
8.byte
字節流。有些時候(網絡通訊)參數傳遞必須以字節流形式傳參。
9.json