基本資料型別補充,set集合,深淺拷貝等

2022-07-17 09:36:15 字數 2441 閱讀 5846

ll = ["wang","jian","wei"]      #可以通過這個方式將列表變成字串

ll1 = "".join(ll)

print(ll1)

# wangjianwei

問題:將列表中姓"周"的刪除,lis = ["周杰倫","周潤發","周樹人","馬化騰"]

看到這個問題首先第一反應就是for迴圈做判斷,然後remove,然後並非如此.

lis = ["周杰倫","周潤發","周樹人","馬化騰"]

for n in lis:

if n[0] == "周":

lis.remove(n)

print(lis)

# ['周潤發', '馬化騰']

這**,這邏輯,沒毛病吧,但是為什麼呢???

原因就在於這個for迴圈,簡單來說for迴圈是要根據乙個指標(索引)去迴圈,當迴圈第乙個值時,被if命中,執行remove,那麼列表中的索引就發生了變化,當周杰倫別刪除時,周潤發就代替了周杰倫索引為"0"的位置,而這時,for迴圈的下乙個迴圈目標是索引1,這時候索引為0的周潤發巧妙的躲過了這次迴圈.最終導致該刪除的沒有別刪除乾淨.

那麼怎麼解決這個問題呢,很簡單,既然在這個列表for迴圈的時候不能操作,那就把我要刪除的值在迴圈的時候拿出來,然後來刪除不就行了.**如下:

li = 

lis = ["周杰倫","周潤發","周樹人","馬化騰"]

for n in lis:

if n[0] == "周":

for j in li:

lis.remove(j)

print(lis)

有如下題目:算出主播的平均收入,然後將低於平均值的主播乾掉,zhubo =

既然上面提到了列表在for迴圈中有問題,那麼字典也不排除,直接上錯誤**..

zhubo = 

del_list =

sum = 0

for n in zhubo.values():

sum += n

sum = sum / len(zhubo)

for j in zhubo.keys():

if zhubo[j] < sum:

del zhubo[j]

print(zhubo)

for j in zhubo.keys():

runtimeerror: dictionary changed size during iteration

這個錯誤提示的大概意思是說,字典在迭代的過程中不能改變大小.所以想在字典迴圈的時候在對字典做增刪改是不可能了.要想操作的話只能按照上面列表的方式(肯定還有其他的辦法),直接上**.

zhubo = 

del_list =

sum = 0

for n in zhubo.values():

sum += n

sum = sum / len(zhubo)

for j in zhubo.keys():

if zhubo[j] < sum:

for q in del_list:

del zhubo[q]

print(zhubo)

dict中的fromkey(,可以幫助我們建立新的dict)

# 方法一

# dic = {}

# s = dic.fromkeys("周杰倫","昆凌")

# print(s)

# # 可以看出將fromkey中的第乙個值迭代了,成為每乙個value的key,建立出來的是乙個value相同,key不同的字典.(第乙個值需要可迭代)

# 方法二

dic = {}

ss = dict.fromkeys([1,2,3,4],"球員")

print(ss)

# #這一種方式也能實現

# ***************深坑請注意***************

# 仔細看下方法二..............定義的空字典的變數名為dic,而使用fromkey的時候卻用的dict,dict是乙個類,乙個關鍵字,不過和方法一是同乙個效果

原因就是fromkey是針對類的操作,而不是針對象的,也叫"靜態方法"

set有時間在補充吧

深淺拷貝

對於深淺拷貝,我沒有太多的例子,不過總結了幾句話.

1>.賦值,任何型別的資料進行賦值,就相當於windows的快捷方式,本質其實都是乙個,乙個修改全部都會變.

2>.字串,數字無論是賦值,淺拷貝,深拷貝,在記憶體中全都是乙個id

3>.除了字串,數字其他的,淺拷貝: 就是拷貝最外層的,裡面的還是以前的.

4>.除了字串,數字,其他的深拷貝: 拷貝所有,但是不拷貝最後一層也就是字串或數字.

5>.通過拷貝方式建立物件,要比正常建立快很多

python基本資料型別之集合set

集合格式 set 由不同元素組成 元素不能重複 set 只能去重,但無序不能保持排列 無序。集合元素必須是不可變型別。不可變型別 字串 整型 元組 方法 set set1 add 新增。clear 清空集合。copy 拷貝。pop 隨機刪除。remove 指定刪除,不存在則會報錯。discard 自...

SET基本資料型別

在python set是基本資料型別的一種集合型別,它有可變集合 set 和不可變集合 frozenset 兩種。建立集合set 集合set新增 集合刪除 交集 並集 差集的操作都是非常實用的方法。set 不允許重複的集合 set不允許重複 的列表 簡單的演示下差集 交集和合集的概念 1 add 新...

Python3 基本資料型別 集合(set)

集合,不可重複的列表,可變型別 difference s1中存在,s2中不存在 s1 s2 v s1.difference s2 print v s2中存在,s1中不存在 s1 s2 v s2.difference s1 print v difference update s1中存在,s2中不存在,...