元組(Tuple):
定義方法:使用小括號()
使用方法:
count:可以統計某個元組段在整個元組中出現的次數
index:可以查詢某個元組段在整個元組中的元組號
name_tuple = ('xiaoming','xiaohong','xiaoli','xiaozhang','xiaoming') #統計xiaoming出現的次數 print name_tuple.count('xiaoming') #統計xiaoming在元組中的下標,默認從0開始計算 print name_tuple.index('xiaoming') #統計xiaoming在元組中的下標,從指定的小標1,開始計算 print name_tuple.index('xiaoming',1)
返回結果:
2
0
4
列表(list):
1.可以增加列表內容 append
2.可以統計某個列表段在整個列表中出現的次數 count
3.可以插入一個字符串,並把整個字符串的每個字母拆分當作一個列表段追加到列表當中 extedn
4.可以查詢某個列表段在整個列表的位置 index
5.可以在指定位置插入一個列表段 insert
6.可以刪除列表的最后一個列表段 pop
7.可以刪除指定列表中的某個列表段 remove
8.可以正向反向排序 reverse
9.可以按字母或數字排序 sort
10.定義列表時候使用中括號"[]"
name_list = ['sean','tom','jack','Angelia','Daisy','jack'] print name_list #增加david列表 name_list.append('david') print name_list #統計jack出現的次數 print name_list.count('jack') #使用extend向列表中增加一個列表 name_list.extend(['hello','world']) print name_list #使用extend向列表中增加列表段 name_list.extend('sean') print name_list #這里統計的是第一個為jacak的id號 print name_list.index('jack') #在索引號為2的地方插入Adam name_list.insert(2, 'Adam') print name_list #刪除最后一個列表段 name_list.pop() print name_list #刪除指定列表段,如果存在多個,刪除第一個 name_list.remove('jack') print name_list #列表倒置 name_list.reverse() print name_list name_list.reverse() #對整個列表進行列表段的首字母進行排序 name_list.sort() print name_list
結果:
['sean', 'tom', 'jack', 'Angelia', 'Daisy', 'jack'] #原始結果 ['sean', 'tom', 'jack', 'Angelia', 'Daisy', 'jack', 'david'] #增加david后的結果 2 #統計jack出現次數 ['sean', 'tom', 'jack', 'Angelia', 'Daisy', 'jack', 'david', 'hello', 'world'] # 使用extend向列表中增加一個列表 ['sean', 'tom', 'jack', 'Angelia', 'Daisy', 'jack', 'david', 'hello', 'world', 's', 'e', 'a', 'n'] #使用extend向列表中增加列表段 2 #統計的是第一個為jacak的id號 ['sean', 'tom', 'Adam', 'jack', 'Angelia', 'Daisy', 'jack', 'david', 'hello', 'world', 's', 'e', 'a', 'n'] #在索引號為2的地方插入Adam ['sean', 'tom', 'Adam', 'jack', 'Angelia', 'Daisy', 'jack', 'david', 'hello', 'world', 's', 'e', 'a'] #刪除最后一個列表段 ['sean', 'tom', 'Adam', 'Angelia', 'Daisy', 'jack', 'david', 'hello', 'world', 's', 'e', 'a'] #刪除指定列表段,如果存在多個,刪除第一個 ['a', 'e', 's', 'world', 'hello', 'david', 'jack', 'Daisy', 'Angelia', 'Adam', 'tom', 'sean'] #列表倒置 ['Adam', 'Angelia', 'Daisy', 'a', 'david', 'e', 'hello', 'jack', 's', 'sean', 'tom', 'world'] #對整個列表進行列表段的首字母進行排序
相同點:都是序列類型
兩者區別:tuple是不可變類型,大小固定,而 list 是可變類型、數據可以動態變化
1、元組是不可變對象,對象一旦生成,它的值將不能更改;列表是可變對象,對象生成后,可以對其元素進行更改、添加、刪除、清空、排序等操作。
可哈希對象就是能映射成內存地址的對象。在Python基本數據類型中,只有列表、字典和可變集合是不可哈希的。說元組是可哈希也不對,如果元組中某個元素是列表、字典或可變集合,那么這個元組也是不可哈希的。可哈希對象和不可哈希對象的區別體現在:可哈希對象可以作為字典的鍵和集合的元素,不可哈希對象則不可以。
tuple 用於存儲異構(heterogeneous)數據,當做沒有字段名的記錄來用,比如用 tuple 來記錄一個人的身高、體重、年齡。
person = (“zhangsan”, 20, 180, 80)
比如記錄坐標上的某個點
point = (x, y)
而列表一般用於存儲同構數據(homogenous),同構數據就是具有相同意義的數據,比如下面的都是字符串類型
[“zhangsan”, “Lisi”, “wangwu”]
再比如 list 存放的多條用戶記錄
[(“zhangsan”, 20, 180, 80), (“wangwu”, 20, 180, 80)]
數據庫操作中查詢出來的記錄就是由元組構成的列表結構。
字典(dict)
字典的基本操作
如何訪問字典中的值? adict[key] 形式返回鍵key對應的值value,如果key不在字典中會引發一個KeyError,如何檢查key是否在字典中? has_key() 形如:adict.haskey(‘name') 有–>True,無–>False b、in 、not in 形如:'name' in adict 有–>True,無–>False 如何更新字典? a、添加一個數據項(新元素)或鍵值對 adict[new_key] = value 形式添加一個項 b、更新一個數據項(元素)或鍵值對 adict[old_key] = new_value c、刪除一個數據項(元素)或鍵值對 del adict[key] 刪除鍵key的項 / del adict 刪除整個字典 adict.pop(key) 刪除鍵key的項並返回key對應的 value值
字典的方法:
dict.keys() 返回一個包含字典所有KEY的列表; dict.values() 返回一個包含字典所有value的列表; dict.items() 返回一個包含所有(鍵,值)元祖的列表; dict.clear() 刪除字典中的所有項或元素; dict.copy() 返回一個字典淺拷貝的副本; dict.fromkeys(seq, val=None) 創建並返回一個新字典,以seq中的元素做該字典的鍵,val做該字典中所有鍵對應的初始值(默認為None); dict.get(key, default = None) 返回字典中key對應的值,若key不存在字典中,則返回default的值(default默認為None); dict.has_key(key) 如果key在字典中,返回True,否則返回False。 現在用 in 、 not in; dict.iteritems()、adict.iterkeys()、adict.itervalues() 與它們對應的非迭代方法一樣,不同的是它們返回一個迭代子,而不是一個列表; dict.pop(key[,default]) 和get方法相似。如果字典中存在key,刪除並返回key對應的vuale;如果key不存在,且沒有給出default的值,則引發keyerror異常; dict.setdefault(key, default=None) 和set()方法相似,但如果字典中不存在Key鍵,由 adict[key] = default 為它賦值; dict.update(bdict) 將字典bdict的鍵值對添加到字典adict中。
集合(set)
s1={0} s2={i / 2 for i in range(10)} print s1,s2 s=set('hi') t=set(['h','e','l','l','o']) print s,t print(s.intersection(t), s & t) # 交集 print(s.union(t), s | t) # 並集 print(s.difference(t), s - t) # 差集 print(s.symmetric_difference(t), s ^ t) # 對稱差集 print(s1.issubset(s2), s1 <= s2) # 子集 print(s1.issuperset(s2), s1 >= s2) # 包含
結果:
set([0]) set([0, 1, 2, 3, 4]) set(['i', 'h']) set(['h', 'e', 'l', 'o']) (set(['h']), set(['h'])) (set(['e', 'i', 'h', 'l', 'o']), set(['e', 'i', 'h', 'l', 'o'])) (set(['i']), set(['i'])) (set(['i', 'e', 'l', 'o']), set(['i', 'e', 'l', 'o'])) (True, True) (False, False)