Python(set/list/dict/tuple)


set集合:
set是一個無序,不重復元素的集合。可嵌套列表,字典(可以for循環或者迭代的對象)。

######差集:
a={11,22}
b={22,33}
c=a.difference(b) #a中存在,b中不存在
d=b.difference(a) #b中存在,a中不存在
print(c) -- {11}
print(d) --{33}
####增刪
集合add方法:是把要傳入的元素做為一個整個添加到集合中,例如:
>>> a = set('boy')
>>> a.add('python')
>>> a
set(['y', 'python', 'b', 'o'])
#####集合update方法:是把要傳入的元素拆分,做為個體傳入到集合中,例如:
>>> a = set('boy')
>>> a.update('python')
>>> a
set(['b', 'h', 'o', 'n', 'p', 't', 'y'])

#刪除元素
#隨機移除某個元素,沒有會報錯
b={11,22,33}
ret=b.pop()
print(b)

print(ret)
#刪除一個元素,沒有不會報錯
d={1,2,3,4,5}
d.discard(2)
print(d)

#接收可以被for循環(可迭代)的對象
list = [1,2,3,4,5]
set1={1,2}
set.update(list)
print(set1)
實例:
找出兩個字典變化的值
old_dict={ "#1":4, "#2":8, "#4":4, }
new_dict={ "#1":8, "#2":8, "#3":4, #加逗號肯定不會報錯,不加可能會有錯誤 }
#取值,取出字典的key
old_key=old_dict.keys() new_key=new_dict.keys()
#將key轉換成集合
old_set=set(old_key) new_set=set(new_key)
#新中存在,舊的不存在,打印出需要刪除的
remove=old_set.difference(new_set) print(remove)
#需要更新的,
update=new_set.difference(old_set) print(update)
#需要添加的
add=old_set.difference(new_set)

set1=set([2,3,4,5])
set2=set("hello")
#集合無法通過數字進行索引。
print(set2)
#並集,差集,交集和對稱差集
a=set1|set2
b=set1&set2
c=set1 - set2
d=set1 ^ set2

#增刪改查
set1.add('x') #添加一個元素
set1.update([6,7,8]) #添加多項
print(set1)
#測試set1中的每個元是否都在set2中
set1.issubset(set2)
set1<=set2
#測試set2中的每個元是否都在set1中
set1 >= set2

列表:list是一種有序的集合,可以隨時添加和刪除其中的元素。
   用一個變量存儲更多的值

eg: name=['sz','yz','xz']
num=[1,2,3,4,5,6,7,8,9,1,23,4,5,54,5,5]
#可以通過下標查找元素,下標從0開始
>>>num[-1] #-1代表列表中最后一個元素
>>>5
>>>num[0] #第一個元素
>>>1
>>>num[-3] #取出列表倒數第三個元素
>>>54 
##如果取值的下標超過列表的總長度就會報錯 
****下標是從0開始
###############
#返回的值是True或false
print(3 in num)
#查看列表中有幾個5
print(num.count(5))
#查看一個元素在列表中的下表,找到第一個值以后,不會繼續查找,直接返回第一個值的下表
print(num.index(5))
#通過len()內置函數可以查看列表的元素個數
len(num)

####切片

user=['zhangsan','lisi','liuwu','zhaoliu','wangqi',1,2,3,4]
#打印出下標2到8的元素
print(user[2:8])
print(user[0:3]) #取0到第3個元素,不包含第4個,0可以不寫
print(user[:-3]) #打印從0到倒數第3個元素
print(user[-3:]) #取最后三個元素
print(user[::2]) #跨步取值

###增刪改查

增加:
user=['zhangsan','lisi','liuwu','zhaoliu',1,2,1,'wangqi',1,2,3,4]
user.append("test") #在列表最后追加一個元素
刪除:
#刪除為1的元素,如果有多個1,那么刪除從左往右的第一個。
user.remove(user[1])
#刪除一個內存中的數據,刪頭不刪尾
del user[3:4]

更改:
user[1]='coffee' #將第二個元素改為coffee
user1 = ['a','b','c','d']
user2 = ['e','f','g','h']
#插入數據
user.insert(1,user1) #插入一個數據,下標為1
user.insert(3,user2) #插入一個數據,下標為3
#統計
user.count('1') #統計1元素的個數
user.sort() #將列表排序
user.reverse() #將列表反轉

#遍歷列表

for i in user:
print(i)

#實例 循環更改列表中元素的值
num = [1,2,3,4,5,3,[3,3,3],6,7,7,8,9,9,9,9,9,5,6,6,6,7]
#num.count統計列表中這個元素有幾個
#這里有幾個,就循環幾次
for i in range(num.count(9)):
#這里統計每個元素的下表是幾
real = num.index(9)
#通過下標來更改元素的值
num[real] = 'HHHHHHHHHHH'
#打印
print(num)
############################
實例: 將新列表合並到num列表里
num = [1,2,3,4,5,3]
num1 = ['zeng','xian']
num.extend(num1)
print(num)

元組
另一種有序列表叫元組:tuple。tuple和list非常類似,但是tuple一旦初始化就不能修改。
tuple一旦初始化,就不能更改

例如
name=('test','study')
同樣可以通過下標來查詢
name[0]
name[1]
如果定義只有1個元素的元組
t1 = (1) 
這里就會有歧義,你定義的不是元組,是1這個數,()當成了數學中的括號,所以你在定義一個元素時,后面要加一個逗號。
t1 = (1,)
tuple = (1,2,3)
n1,n2,n3=tuple #把n1,n2,n3分別賦值給元組中的1,2,3個元素
print(n1,n2,n3)

字典: 無序,使用鍵值對存儲,具有極快的查找速度。
dict特點:
查找和插入的速度極快,不會隨着key的增加而變慢;
需要占用大量的內存,內存浪費多。
list:
查找和插入的時間隨着元素的增加而增加;
占用空間小,浪費內存很少。

info = {'name':'zeng','job':'IT','age':'22'}
print("查看key為name的value: ",info['name']) #查看key為name的value
info['job']='devs' #將job的value重新賦值
info['city']='bj' #如果字典中有city這個key就把對應的value改成bj,如果沒有,就創建一個key-value
info.pop('age') #刪除key為age的數據,跟del info['age']一樣
info.popitem() #隨機刪除一條數據,如果dict為空時,此語法會報錯
info.items() #將dict的key value轉換為列表的形式顯示
print(info.get('nme')) #如果字典中存在name這個key,則返回對應的value否則返回None。
print(info.get('nmna','沒有這個key!')) #如果字典中存在name這個key,則返回對應的value否則返回自定義的值
info.clear() #清空字典
info.fromkeys([1,2,3],'hehe') #根據列表來創建dict的key,后面hehe是默認的value,不加是None
info.setdefault('name','nm') #如果字典里存在name這個key,則返回value,否則創建一個叫name的key,並將value設置為nm。
#用dict2這個字典去更新info,如果存在相同的key,那么使用dict2中的key,如果dict2中的key在info沒有。那么創建相應的記錄
dict2={'k':1,'h':2}
info.update(dict2)
print(info)

####遍歷字典的方法

#1.for循環打印出字典中的key
for i in info:
print(i)

#2.首先把字典轉換為列表。並把key value值轉換為元組,所以你可以在每次循環時賦值兩個變量進去。
c=info.items()
print(c)
for a,b in c:
print(a,b)

 


免責聲明!

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



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