可變型別與不可變型別
字典的定義
字典的內建方法
集合的建立
訪問集合中的值
集合的內建方法
集合的轉換
針對序列的內建函式
那麼如何快速判斷乙個資料型別 x 是不是可變型別的呢?
兩種方法:
麻煩方法:用 id(x) 函式,對 x 進行某種操作,比較操作前後的 id ,如果不一樣,則 x 不可變,如果一樣,則 x 可變。
便捷方法:用 hash(x) ,只要不報錯,證明 x 可被雜湊,即不可變,反過來不可被雜湊,即可變。
seq =
('name'
,'age'
,'***'
)dic1 =
dict
.fromkeys(seq)
print
("新的字典為 : %s"
%str
(dic1)
)# 新的字典為 :
直接賦值和 copy 的區別
dic1 =
# 引用物件
dic2 = dic1
# 深拷貝父物件(一級目錄),子物件(二級目錄)不拷貝,還是引用
dic3 = dic1.copy(
)print(id
(dic1)
)# 148635574728
print(id
(dic2)
)# 148635574728
print(id
(dic3)
)# 148635574344
# 修改 data 資料
dic1[
'user']=
'root'
dic1[
'num'
].remove(1)
# 輸出結果
print
(dic1)
# print
(dic2)
# print
(dic3)
#
python 中set 與dict 類似,也是一組key 的集合,但不儲存value 。由於key 不能重複,所以,在set 中,沒有重複的key 。注意, key 為不可變型別,即可雜湊的值。
去掉列表中重複的元素
lst =[0
,1,2
,3,4
,5,5
,3,1
]temp =
for item in lst:
if item not
in temp:
print
(temp)
# [0, 1, 2, 3, 4, 5]
a =set
(lst)
print
(list
(a))
# [0, 1, 2, 3, 4, 5]
se =
set(
range(4
))li =
list
(se)
tu =
tuple
(se)
print
(se,
type
(se)
)#
print
(li,
type
(li)
)# [0, 1, 2, 3]
print
(tu,
type
(tu)
)# (0, 1, 2, 3)
不可變集合
python 提供了不能改變元素的集合的實現版本,即不能增加或刪除元素,型別名叫frozenset 。需要注意的是frozenset 仍然可以進行集合操作,只是不能用帶有update 的方法。
a =
frozenset
(range(10
))# 生成乙個新的不可變集合
print
(a)# frozenset()
b =frozenset
('lsgogroup'
)print
(b)# frozenset()
frozenset([iterable]) 返回乙個凍結的集合,凍結後集合不能再新增或刪除任何元素。
sorted(iterable, key=none, reverse=false) 對所有可迭代的物件進行排序操作。
a. iterable – 可迭代物件。
b. key – 主要是用來進行比較的元素,只有乙個引數,具體的函式的引數就是取自於可迭代物件中,指定可
迭代物件中的乙個元素來進行排序。
c. reverse – 排序規則, reverse = true 降序 , reverse = false 公升序(預設)。
d. 返回重新排序的列表。
x =[-
8,99,
3,7,
83]print
(sorted
(x))
# [-8, 3, 7, 83, 99]
print
(sorted
(x, reverse=
true))
# [99, 83, 7, 3, -8]
t =(,,
)x =
sorted
(t, key=
lambda a: a[
"age"])
print
(x)# [, , ]
用於將乙個可遍歷的資料物件(如列表、元組或字串)組合為乙個索引序列,同時列出資料和資料下標,一般用在 for 迴圈當中。
seasons =
['spring'
,'summer'
,'fall'
,'winter'
]a =
list
(enumerate
(seasons)
)print
(a)# [(0, 'spring'), (1, 'summer'), (2, 'fall'), (3, 'winter')]
b =list
(enumerate
(seasons,1)
)print
(b)# [(1, 'spring'), (2, 'summer'), (3, 'fall'), (4, 'winter')]
for i, element in a:
print
(','
.format
(i, element)
)
zip(iter1 [,iter2 […]])
a. 用於將可迭代的物件作為引數,將物件中對應的元素打包成乙個個元組,然後返回由這些元組組成的對
象,這樣做的好處是節約了不少的記憶體。
b. 我們可以使用 list() 轉換來輸出列表。
c. 如果各個迭代器的元素個數不一致,則返回列表長度與最短的物件相同,利用 * 號操作符,可以將元組
解壓為列表。
a =[1
,2,3
]b =[4
,5,6
]c =[4
,5,6
,7,8
]zipped =
zip(a, b)
print
(zipped)
# print
(list
(zipped)
)# [(1, 4), (2, 5), (3, 6)]
zipped =
zip(a, c)
print
(list
(zipped)
)# [(1, 4), (2, 5), (3, 6)]
a1, a2 =
zip(
*zip
(a, b)
)print
(list
(a1)
)# [1, 2, 3]
print
(list
(a2)
)# [4, 5, 6]
python學習 字典
字典的形式 形式 dict key 鍵 可以理解為代號 value 值 代號所指代的內容 字典的特點 1 字典是 無序 的,它不能通過偏移來訪問,只能 通過鍵來訪問 2 可以巢狀 3 可變資料型別,可以在原地修改裡面的內容。4 組成字典的 鍵 必須是 不可變 的資料型別,比如,數字,字串,元組等 列...
python學習 字典
這幾天都比較忙,在搞android開發,接著就天天碼 自然就是很晚。抽點時間現在來看一下python方面的基礎,字典。字典 字典是一種可變容器模型,可以為任意型別。字典中由鍵和值組成,中間冒號隔開。使用冒號隔開,這樣就可以一一的建立好乙個物件,物件之間使用逗號隔開。使用arcmap來建立乙個物件。建...
Python學習 字典
python學習 字典 1.字典是一系列鍵 值對。每個鍵都與乙個值相關聯,可以通過鍵來訪問相應的值。與鍵相關聯的值可以是數字 字串 列表 字典或者任何的python物件。2.python不關心字典中鍵 值對的儲存順序,只關心鍵和值之間的關聯關係。也就是不能像列表中一樣通過角標來訪問鍵 值對。3.使用...