Tuple、list的區別以及dict和set


元組(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、元組是不可變對象,對象一旦生成,它的值將不能更改;列表是可變對象,對象生成后,可以對其元素進行更改、添加、刪除、清空、排序等操作。

2、可哈希和不可哈希
可哈希對象就是能映射成內存地址的對象。在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、innot 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。 現在用 innot 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)

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM