本文目錄一覽:
python怎樣遍歷.py的內容?
列表的遍歷
方法一:通過for循環
li = [i for i in range(10)]
for i in li:
print(i)
方法二:通過while循環
# 雖然for循環已經很好用了,但是在有些情況下,使用while循環可以更靈活
# 只需要將判斷條件設置為小於列表長度,即可完成列表通過while循環的遍歷
li = [i for i in range(10)]
i = 0
while i len(li):
print(li[i])
i += 1
方法三:配合enumerate使用,同時獲取列表的索引
li = [i + 1 for i in range(10)]
# 此時,i為一個元組,元組的第一個元素為索引,第二個元素為原列表的元素
# 因此,在遍歷列表的同時,需要同時獲取坐標的情況下,可以配合enumerate()一起使用
for i in enumerate(li):
print(i)
字典的遍歷
字典的遍歷和列表有一些不同,因為字典有鍵和值兩個關鍵部分。默認的遍歷情況,是遍歷字典的鍵,當然,可以通過字典的鍵取得值,也可以直接遍歷值,或者直接遍歷鍵和值。
方法一:直接使用for循環
直接使用for循環對一個字典進行遍歷,默認取得的是字典的鍵
dt = {i: i + 1 for i in range(10)}
for i in dt:
print(“字典的鍵:”, i) # 字典的鍵
print(“字典的值:”, dt[i]) # 字典的值
方法二:遍歷dict.keys()
這種方法與方法一的效果其實是一樣的,同樣是獲取字典的鍵
dt = {i: i + 1 for i in range(10)}
for i in dt.keys():
print(“字典的鍵:”, i) # 字典的鍵
print(“字典的值:”, dt[i]) # 字典的值
方法三:遍歷dict.values()
這種方法與方法一和二很不相同,因為它只獲取了字典的值
dt = {i: i + 1 for i in range(10)}
# 這是很特殊的方法,因為它沒有獲取字典的鍵
for i in dt.values():
print(“字典的值:”, i) # 此時i不再是字典的鍵,而是值
方法四:遍歷dict.items()
這種方法一般來說要更好,因為它同時獲取到了字典的鍵和值,而且性能上要高於先獲取鍵,再通過鍵獲取對應的值
dt = {i: i + 1 for i in range(10)}
for i in dt.items():
print(“字典的鍵值對:”, i)
print(“字典的鍵:”, i[0])
print(“字典的值:”, i[1])
總結
1,列表的遍歷比較簡單,除了配合enumerate()使用,可以同步獲取索引以外,並沒有特別值得糾結的。
2,字典的遍歷方法比較多,其中第四種是能適用於一切情況的,前兩種也可以適用於一切情況,但是如果你同時需要獲取鍵和值,性能不如第四種要好。第三種比較特別,除非你真的只需要字典的值,否則它在多數情況下是不能夠滿足需求的。
Python字典的底層實現
字典是一種可變、無序容器數據結構。元素以鍵值對存在,鍵值唯一。它的特點搜索速度很快:數據量增加10000倍,搜索時間增加不到2倍;當數據量很大的時候,字典的搜索速度要比列錶快成百上千倍。
在Python中,字典是通過散列表(哈希表)實現的。字典也叫哈希數組或關聯數組,所以其本質是數組(如下圖),每個 bucket 有兩部分:一個是鍵對象的引用,一個是值對象的引用。所有 bucket 結構和大小一致,我們可以通過偏移量來讀取指定 bucket。
定義一個字典 dic = {},假設其哈希數組長度為8。
Python會根據哈希數組的擁擠程度對其擴容。「擴容」指的是:創造更大的數組,這時候會對已經存在的鍵值對重新進行哈希取余運算保存到其它位置;一般接近 2/3 時,數組就會擴容。擴容後,偏移量的數字個數增加,如數組長度擴容到16時,可以用最右邊4位數字作為偏移量。
計算鍵對象 name 的哈希值,然後比較哈希數組對應索引內的bucket是否為空,為空返回 None ,否則計算這個bucket的鍵對象的哈希值,然後與 name 哈希值比較,相等則返回 值對象 ,否則繼續左移計算哈希值。
注意:
1.鍵必須為可哈希的,如數字、元組、字符串;自定義對象需要滿足支持hash、支持通過 __eq__() 方法檢測相等性、若 a == b 為真,則 hash(a) == hash(b) 也為真。
2.字典的內存開銷很大,以空間換時間。
3.鍵查詢速度很快,列表查詢是按順序一個個遍歷,字典則是一步到位。
4.往字典裏面添加新鍵可能導致擴容,導致哈希數組中鍵的次序變化。因此,不要在遍歷字典的同時進行字典的修改。
軟件測試中,python字典遍歷的幾種方法?
1 遍歷key值my_dict = for key in my_dict: print(“鍵是”,key)2 遍歷value值my_dict = for value in my_dict.values(): print(“值是”,value)3 遍歷鍵值對 for kv in a.items(): # kv 是元組形式 print(kv) 在控制台輸出的結果是# (a, 1)#(b, 2)#(c, 3)如果想了解更多
原創文章,作者:小藍,如若轉載,請註明出處:https://www.506064.com/zh-hk/n/310177.html