那些重要但是容易被忽略的python編程基礎知識

python很容易上手,工具包特別多,入門後就特別容易忽略python的基本特性。這裏將特別關注python那些特別基礎,重要但是不起眼的地方。

變量類型

標準數據類型

數字、字符串、列表,元組和字典。

首先看看列表list,列表元素及其index對應關係如下圖所示。
在這裏插入圖片描述
python list支持用索引切片的方式讀取list的部分內容。
刪除列表中第3個元素:del a[2]
將兩個列表組合在一起: [1,2,3]+[4,5,6] 得到[1,2,3,4,5,6]
列表的長度: len(a)
重複創建列表:[1]*4 得到 [1, 1, 1, 1]
列表中是否有某個元素: 2 in [1,2] 返回 True
連同下標一起迭代:

a = ['runoob', 786, 2.23, 'john', 70.2]

for idx, ia in enumerate(a):
    print(idx, ia)

得到:

0 runoob
1 786
2 2.23
3 john
4 70.2

列表內置方法如下:

list.append( obj ) 在列表的末尾添加元素,例如a.append(3)
list.count(obj) 統計某個元素在列表中出現的次數
list.extend(seq) 擴展原來的列表,在其末尾一次性追加seq中的所有元素
list.index( obj ) 從列表中找出某個值的第一個匹配項目的索引位置
list.insert( index, obj ) 將對象插入列表
list.pop(index) 移除列表中的一個元素(默認是最後一個元素),並且返回該元素的值
list.remove(obj) 移除列表中某個值的第一個匹配項
list.reverse( ) 對列表中的所有元素倒序排列

一定要注意這些方法都是對列表本身進行操作,直接改變原list,內置方法的返回值爲None。
例如:

b = ['Google', 'Runoob', 'Taobao', 'Google', 'Being', 'Huawei','Taobao', 'Google']
print(b.count('Google'))
print(b.index('Taobao'))

b.remove('Taobao')
print(b)
b.insert(9,'Last')
print(b)
b.insert(4, 'Mid')
print(b)

對列表中的元素進行排序。如果是字符串,就按照首字母,如果是數字,按照從小到大。但如果是數字和字符串混合的列表,不能用sort() 內置方法排序。

print('list b:')
print(b)
print('sorted: ' )
b.sort()
print(b)

print('sorted reversly: ' )
b.sort(reverse=True)
print(b)

c = [3, 15, 62, 4, 23]
c.sort()
print(c)
c.sort(reverse=True)
print(c)


d = b+c
print(d)
d.sort()
print(d)

得到:

list b:
['Google', 'Runoob', 'Google', 'Being', 'Mid', 'Huawei', 'Taobao', 'Google', 'Last']
sorted: 
['Being', 'Google', 'Google', 'Google', 'Huawei', 'Last', 'Mid', 'Runoob', 'Taobao']
sorted reversly: 
['Taobao', 'Runoob', 'Mid', 'Last', 'Huawei', 'Google', 'Google', 'Google', 'Being']
[3, 4, 15, 23, 62]
[62, 23, 15, 4, 3]
['Taobao', 'Runoob', 'Mid', 'Last', 'Huawei', 'Google', 'Google', 'Google', 'Being', 62, 23, 15, 4, 3]
TypeError: '<' not supported between instances of 'int' and 'str'

字典

字典是可變容器模型,且可存儲任意類型對象。字典的每個鍵值 key=>value 對用冒號 : 分割,每個鍵值對之間用逗號 , 分割,整個字典包括在花括號 {} 中 。
例如:

grades = {'Alice': 98, 'Joe': 90, 'Julia': 99, 'Bob':76, 'Ann':66, 'Moley':100, 'Hill':50}

print(grades['Alice'])

del grades['Moley']
print(grades)

sum35 = {1:34, 32:3, 2:33}
print(sum35)

值得注意的是,python的字典不允許同一個鍵出現兩次。創建時如果同一個鍵被賦值兩次,後一個值會被記住。第二,鍵必須不可變,所以可以用數字,字符串或元組充當,所以用列表就不行。

字典的內置函數&方法

cmp(dic1, dic2)比較兩個字典的元素
len(dic) 返回字典元素的個數
str(dic) 輸出字典可打印的字符串表示
type(dic) 返回輸入變量的類型

內置方法有:
dic.clear() 刪除字典內的所有元素
dic.copy() 返回一個字典的淺複製
dic.get(key,default=None)
dic.has_key(key)
dic.itmes() 以列表返回可遍歷的元組數組
dic.keys() 以列表返回字典中所有的鍵
dic.values() 以列表的形式返回所有的值

例如:

grades.items()
Out[73]: dict_items([('Alice', 98), ('Joe', 90), ('Julia', 99), ('Bob', 76), ('Ann', 66), ('Hill', 50)])


字符串前符號

字符串前加 u
例: u"我是含有中文字符組成的字符串。"

作用:後面字符串以 Unicode 格式 進行編碼,一般用在中文字符串前面,防止因爲源碼儲存格式問題,導致再次使用時出現亂碼。

字符串前加 r
例:r"\n\n\n\n”  # 表示一個普通生字符串 \n\n\n\n,而不表示換行了。

作用:去掉反斜槓的轉移機制。(特殊字符:即那些,反斜槓加上對應字母,表示對應的特殊含義的,比如最常見的”\n”表示換行,”\t”表示Tab等。 )

應用:常用於正則表達式,對應着re模塊。

字符串前加 b
例:response = b'<h1>Hello World!</h1>' # b' ' 表示這是一個 bytes 對象

作用:
b" "前綴表示:後面字符串是bytes 類型。

用處:
網絡編程中,服務器和瀏覽器只認bytes 類型數據。如:send 函數的參數和 recv 函數的返回值都是 bytes 類型

在 Python3 中,bytes 和 str 的互相轉換方式是
str.encode(‘utf-8’)
bytes.decode(‘utf-8’)

發佈了115 篇原創文章 · 獲贊 123 · 訪問量 28萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章