python集合数据对象_python学习第七天 基础数据类型补充 深浅copy 集合 关键字后面加可迭代对象...
在基礎(chǔ)數(shù)據(jù)類型中可能遇到的坑:
元組:
tuple1=(1) 的數(shù)據(jù)類型是int , tuple2=(‘a(chǎn)lex‘)的數(shù)據(jù)類型是str 等
tuple1=(1,) 和 tuple2的數(shù)據(jù)類型是 tuple
列表:
列表與列表之間可以相加,但不可以減(面試題)
list1=[1,2,3]
list2=[‘a(chǎn)‘,‘b‘]
list3=list1+list2
print(list3)
#[1, 2, 3, ‘a(chǎn)‘, ‘b‘]
對(duì)于可變數(shù)據(jù)類型容易遇到的坑:
列表: 在for循環(huán)中刪除列表中的元素,索引會(huì)跟著變化
# 刪除列表中偶數(shù)索引對(duì)應(yīng)的元素
# 方法1:新建一個(gè)列表,將奇數(shù)索引對(duì)應(yīng)的元素添加進(jìn)去
list1=[1,2,3,4,5,6,7]
list2=[]
for i in list1:
if list1.index(i) % 2 == 1:
list2.append(i)
print(list2
# 方法2:從列表的最后開(kāi)始刪
list1=[1,2,3,4,5,6,7]
for i in range(len(list1)-1,-1,-1):
if i % 2 == 0:
list1.pop(i)
print(list1)
# 方法3
# list1=[1,2,3,4,5,6,7]
# del list1[0::2]
# print(list1)
字典: 在for循環(huán)中刪除字典中的鍵值對(duì),for循環(huán)會(huì)報(bào)錯(cuò)
# 刪除字典中含k的鍵
# 方法1:將keys提取到列表中,循環(huán)去除
dic={‘k1‘:1,‘k2‘:2,‘name‘:3}
list1=list(dic.keys())
for i in list1:
if ‘k‘ in i:
dic.pop(i)
print(dic)
# # 方法2
# dic={‘k1‘:1,‘k2‘:2,‘name‘:3}
# dic2={}
# for k in dic.keys():
# if ‘k‘ not in k:
# dic2.setdefault(k,dic[k])
# print(dic2)
創(chuàng)建字典的3種方法(面試題)
1.dic1={}
2.dic2=dict()
3.dic3=dict.fromkeys([‘key1‘,‘key2‘,‘key3‘],[ ]) fromkeys后面加可迭代數(shù)據(jù)
# dic3=dict.fromkeys([‘key1‘,‘key2‘,‘key3‘],[])
# dic3[‘key1‘]=‘a(chǎn)lex‘
# print(dic3)
#{‘key1‘: ‘a(chǎn)lex‘, ‘key2‘: [], ‘key3‘: []}
區(qū)分:
# dic3=dict.fromkeys([‘key1‘,‘key2‘,‘key3‘],[])
# dic3[‘key1‘].append(‘1‘)
# print(dic3)
#{‘key1‘: [‘1‘], ‘key2‘: [‘1‘], ‘key3‘: [‘1‘]}
dic4=dict.fromkeys([‘key1‘,‘key2‘,‘key3‘],‘a(chǎn)lex‘)
dic3=dict.fromkeys([‘key1‘,‘key2‘,‘key3‘],‘egon‘)
print(dic3)
#{‘key1‘: ‘egon‘, ‘key2‘: ‘egon‘, ‘key3‘: ‘egon‘}
集合:
集合的創(chuàng)建:
1. set1={1,2,3}
2.set2=set()
特點(diǎn):
集合本身是可變數(shù)據(jù)類型 frozenset(set1): 凍集合,可以做字典的鍵
集合里面的元素必須是不可變數(shù)據(jù)類型
集合是無(wú)序的
集合天然去重 (面試題)
# 方法1:利用set去重
list1=[‘a(chǎn)lex‘,‘egon‘,1,‘a(chǎn)lex‘]
set1=set(list1)
list1=list(set1)
print(list1)
# 方法2:利用for循環(huán)去除
list1=[‘a(chǎn)lex‘,‘egon‘,1,‘a(chǎn)lex‘]
list2=[]
for i in list1:
if i not in list2:
list2.append(i)
print(list2)
集合的增和刪
增:
add
update 相當(dāng)于list 的extend
刪:
remove 按元素刪
pop 隨機(jī)刪
clear 清空
del 內(nèi)存級(jí)別刪
數(shù)據(jù)類型之間的相互轉(zhuǎn)換:
1.
str-->list : split()
list-->str : join 列表里只能由字符串類型的數(shù)據(jù),有其他類型的數(shù)據(jù)會(huì)報(bào)錯(cuò)
list1=[‘a(chǎn)lex‘,‘egon‘,‘a(chǎn)lex‘]
s=‘_‘.join(list1)
print(s)
2.
dict-->list:
list(dic.keys())
list(dic.values())
list(dic.ites())
list-->dict:
列表不能轉(zhuǎn)換為字典
3.
tuple-->list: list1=list(set())
list-->tuple: tuple1=tuple(list())
賦值=與深淺copy:
賦值 = : 數(shù)據(jù)一樣,id也一樣
淺copy: 數(shù)據(jù)一樣,里層的id一樣,最外層的id不一樣 (int str bool類型沒(méi)有淺copy)
list1=[1,2,3]
list2=list1.copy()
print(id(list1),id(list2))
print(id(list1[0]),id(list2[0]))
#1866482736328 1866482736264
#1887330528 1887330528
深copy:數(shù)據(jù)一樣,里層外層的id都不一樣 (int str bool類型有深copy但id不變)
import copy
list1=[1,2,3]
list2=copy.deepcopy(list1)
print(id(list1),id(list2))
print(id(list1[0]),id(list2[0]))
關(guān)于一些關(guān)鍵字后面加可迭代對(duì)象
enumerate
‘ ‘.join()
for循環(huán)
總結(jié)
以上是生活随笔為你收集整理的python集合数据对象_python学习第七天 基础数据类型补充 深浅copy 集合 关键字后面加可迭代对象...的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: strstr函数_[LeetCode]
- 下一篇: 序列化的作用_Java 序列化的高级认识