列表
Python中列表是一個有序的序列??樟斜?可以用 []
或者 list()
生成.
列表用一對 []
生成,中間的元素用 ', ' 隔開,其中的元素不需要是同一類型,同時列表的長度也不固定。
通過索引和分片修改list
與字符串不同的是,列表可以通過索引和分片來修改。
事實上,對于連續的分片(即步長為 1 ),Python采用的是整段替換的方法,兩者的元素個數并不需要相同
a = [10, 11, 12, 13, 14]
a[1:3] = [1, 2, 3, 4]
a
#out: [10, 1, 2, 3, 4, 13, 14]
對于不連續(間隔step不為1)的片段進行修改時,兩者的元素數目必須一致:
a = [10, 11, 12, 13, 14]
a[::2] = [1, 2, 3]
a
#out: [1, 11, 2, 13, 3]
列表方法
列表方法 | 用法 | detail |
---|---|---|
計算元素個數 | l.count(ob) |
列表中元素 ob 出現的次數 |
某個元素位置 | l.index(ob) |
列表中元素 ob 第一次出現的索引位置,如果 ob 不在 l 中會報錯 |
添加單個元素 | l.append(ob) |
將元素 ob 添加到列表 l 的最后 |
添加序列 | l.extend(lst) |
將序列 lst 的元素依次添加到列表 l 的最后,作用相當于 l += lst |
插入元素 | l.insert(idx, ob) |
在索引 idx 處插入 ob ,之后的元素依次后移 |
移除元素 | l.remove(ob) |
將列表中第一個出現的 ob 刪除,如果 ob 不在 l 中會報錯 |
彈出元素 | l.pop(idx) |
將索引 idx 處的元素刪除,并返回這個元素 |
排序 | l.sort() |
將列表中的元素按照一定的規則排序 |
列表反向 | l.reverse() |
將列表中的元素從后向前排列 |
拷貝 | l.copy |
創建列表淺拷貝,深拷貝用copy模塊中的deepcopy() |
元組
與列表相似,元組Tuple也是個有序序列,但是元組是不可變的,用()
生成。
元組排序:
可以用
sorted(a)
排序,不會改變元組,a.sort()
不可用,回報錯
元組函數和方法
元組函數: len()
, max()
,min()
,tuple(a)
由于元組是不可變的,所以只能有一些不可變的方法,如計算元素個數 a.count()
和元素位置 a.index()
等,用法與列表一樣。
列表與元組的速度比較
元組的生成速度會比列表快很多,迭代速度快一點,索引速度差不多。
字典
</center>
字典是一種映射類型,字典沒有順序,key必須是不可變類型,而value可以是任意python對象,int和string最常用作key,但float不推薦。元組也可以用做key。
Python中不能用支持用數字索引按順序查看字典中的值,而且數字本身也有可能成為鍵值,這樣會引起混淆。
字典操作
常見操作 | 用法 |
---|---|
空字典 | 使用 {} 或者 dict() ,只要元素和元素之間有對應關系都可用dict()
|
初始化字典 | a= {key: value,key: value,...} |
插入,更新鍵值 | a[key]=value |
查看鍵值 | a[key] |
成員判斷 | 用in
|
刪除字典成員 | del a[key] |
轉化來生成字典 | 通過 dict()
|
invent = dict([('from', 18), ('spat', 34), ('snit', 23)])
invent
#out: {'from': 18, 'snit': 23, 'spat': 34}
字典方法
列表方法 | 用法 | detail |
---|---|---|
get | d.get(key, default = None) |
返回字典中鍵對應的值,如果沒有這個鍵,返回 default 指定的值(默認是 None)。索引不存在的鍵值會報錯,get不會: |
pop | d.pop(key, default = None) |
刪除并返回字典中鍵 key 對應的值,如果沒有這個鍵,返回 default 指定的值(默認是 None ) |
update | d.update(newd) |
將字典newd中的內容更新到d中去 |
in | value in d |
判斷字典中是否有某個特定的鍵 |
clear | d.clear() |
清空字典 |
key | d.keys() |
返回一個由所有鍵組成的列表; |
value | d.values() |
返回一個由所有值組成的列表; |
items | d.items() |
返回一個由所有鍵值對元組組成的列表; |
例: update()
的用法
person = {'born': 1831, 'last': 'Maxwell', 'first': 'Jmes'}
person_modi = {'first': 'James', 'middle': 'Clerk'}
person.update(person_modi)
person
#out: {'middle': 'Clerk', 'born': 1831, 'last': 'Maxwell', 'first': 'James'}
例: items()
的用法
barn = {'cows': 1, 'dogs': 5, 'cats': 3}
barn.items()
#out: [('cows', 1), ('cats', 3), ('dogs', 5)]
for key, value in barn.items():
例: 創建員工信息表時,將所有員工工資默認為3000
aDict={}.formatkeys(('A','B','C','D'),3000)
aDict
#out: {'A':3000, 'B':3000, 'C':3000, 'D':3000}
例: 已知姓名列表和工資列表,生成字典類型員工
names=['A','B','C','D']
salaries=[3000,2000,15000,2500]
dict(zip(names, salaries))
集合
集合 set 是一種無序的序列
空集合:
set()
, 創建空集合的時候只能用set來創建,因為在Python中{}創建的是一個空的字典
初始化集合:
可以使用一個列表來初始化一個集合
a = set(l)
,集合會自動去除重復元素
集合操作
集合方法 | 用法 | detail |
---|---|---|
并 |
a.union(b) 或a | b
|
包含兩個集合所有元素的集合(去除重復) |
交 |
a.intersection(b) 或 a & b
|
返回包含兩個集合共有元素的集合 |
差 |
a.difference(b) 或 a - b
|
返回只在 a 不在 b 的元素組成的集合 |
對稱差 |
a.symmetric_difference(b) 或 a ^ b
|
不同時在 a 和 b 中的元素組成的集合 |
包含關系 |
b.issubset(a) 或b <= a
|
判斷 b 是不是 a 的子集,判斷真子集用a < a
|
集合方法
集合方法 | 用法 | detail |
---|---|---|
add | s.add(a) |
跟列表的 append 方法類似,用來向集合添加單個元素 |
update | s.update(seq) |
跟列表的extend方法類似,用來向集合添加多個元素 |
remove | s.remove(ob) |
從集合s中移除元素ob,如果不存在會報錯 |
pop | s.pop() |
集合沒有順序,所以刪除并返回集合中任意一個元素,如果沒有元素會報錯 |
discard | t.discard(ob) |
作用與 remove 一樣,但是當元素在集合中不存在的時候不會報錯。 |
difference_update | a.difference_update(b) |
從a中去除所有屬于b的元素 |
不可變集合
不可變集合一旦創建就不可變,使用 frozenset()
來進行創建