回覆列表
-
1 # 叫我小包總
-
2 # 啊窩額
Python中字典和列表的分享:
不敢說是技巧,但是有一些自己整理出來的表格,希望可以跟你分享。
列表與字典,兩種型別都是集合的型別,以列表為例的話,如果列表中包含列表,就形成巢狀。這兩種型別幾乎是所有python指令碼的主要工作元件。這種結構資訊是可變的可修改的,但是常量就是定義了就不能在修改,下面是列表操作的內容:
關於列表的操作我們可以透過help(list)或者dir(list),或者用真實的列表替換關鍵詞list來檢視幫助文件。
列表的特點就是:
1.任意物件的有序集合
2.透過偏移量來讀取
3.長度是可變的還有異構以及任意巢狀與字典一樣的
4.屬於可變序列分類,與字串常量相比的話,列表是可變的,可以進行增合改刪的操作
5.物件引用陣列
6.列表元素以逗號分割
字典可以說是列表以外很靈活的內建資料結構,它的特點是:
1.透過鍵來存取值而不是透過偏移量,鍵的話必須是不可以變型別。
2.字典元素為無序集合
3.可變長、異構,任意巢狀
4.屬於可變對映型別
5.散列表,透過hash運算進行資料檢索,與列表是一樣的儲存物件的引用不是複製。
最後是一張python學習的線路圖,可以找到自己希望的發展路徑,進行重點學習。
每天把學習Python的知識點記錄下來
摘要
關於Python的資料結構、字典和列表的小技巧。
正文
1.Python中的複製
eg:a=【1,2,3】,如果把a中的內容複製到b中,我們怎麼做呢?
a=[1,2,3]
b=a
b.append(4)
print( id(a),a)
print (id(b),b)
但問題來了,b中明明有4個元素,但用id()函式後,卻和a中的元素一樣了,為什麼呢?答案是:b只是a的引用,都是同一個地址,並沒有實現真正意義上的copy。那我們怎麼改呢?
import copy
a=[1,2,3]
b=copy. copy(a)
b.append(4)
print("a:",a)
print("b:",b)
a: [1, 2, 3]
b: [1, 2, 3, 4]
小結:當你想修改一個物件,而又不想改變原物件,你必須使用copy模組。
2.如何讓列表中的元素存在就返回,不存在就返回預設值?
問題描述:假設有一個列表L,一個索引號i,我們希望當i時L的有效索引時就獲取L[i],如果不是有效的索引,就返回一個預設值。
第一種情況:對於字典來說
d={1:"aa",2:"bb",3:"cc"}
print(d.get(4,"xx"))
xx
第二種情況:對於列表
def list_get(L,i,v=None):
if-len(L)<=i<len(L):return L[i]
else:
return v
print(list_get([1,2,3],-3,10))
print(list_get([1,2,3],5,10))
小結:需要注意的是列表的下標是負數[-len,len].
3.如何迴圈訪問序列中的元素和索引?
問題描述:我們需要迴圈訪問一個序列並且每一步都知道自己已經訪問到的索引,並替換掉對應值因為Pyhthon預設的迴圈方式是完全不依賴索引的
eg:我們想把列表中的10換成3?
list1=[1,2,10,4]
for index,item in enumerate(list1):
if item>9:
list1[index]=3
print(list1)
[1, 2, 3, 4]
4.如何用字典格式化長的字串?
aInfo={"wangdachui":3000,"niuyun":2000,"linling":4500,"Tianqi":8000}
template="""
Welcome to the pay
niuyun" salary is %(niuyun)s.
wangdachui"s salary is %(wangdachui)s.
"""
print(template%aInfo)
Welcome to the pay wall.
NiuYun" salary is 2000.
Wangdachui"s salary is 3000.
小結:主要用到一個template模組。
aStock={"AXP":86.40,"BA":122.64}
bStock=aStock
aStock={}
print(bStock)
print(aStock)
如果想把原始的字典和賦值的字典一起清空,該怎麼做呢?
aStock={"AXP":86.40,"BA":122.64}
bStock=aStock
aStock.clear()
print(bStock)
print(aStock)
6.如何列印檔案中中英文混合的檔案?
import os
for name in os.listdir("."):
print(name.encode("gbk")) #win下的中文編碼都是gbk
小結:這塊用了os模組,以及encode,注意在Python2中是decode。
7.怎麼找兩個字典中的相同內容呢?
問題描述:找出d1和d2中相同的部分?
d1={"aa":100,"bb":200,"cc":300}
d2={"cc":300,"dd":400}
方法一:
print(set(d1.items())&set(d2.items()))
方法二:
new_d1_d2=dict(set(d1.items())&set(d2.items()))
print(new_d1_d2)
總結:
我所有的程式碼都是基於Python3編寫的,每一個都是我測試過的。
希望感興趣的同學快快執行一下吧。每天進步一點點,和我一起學Python吧!