資料型別操作常見的問題

2022-07-31 02:57:19 字數 2682 閱讀 4128

目錄

lst = [1,2,3,4,5,6]

for i in lst:

print(lst)

print(lst)

列表: 迴圈刪除列表中的每⼀個元素

li = [11, 22, 33, 44]

for e in li:

li.remove(e)

print(li)

結果:[22, 44]

分析原因: for的運⾏過程. 會有⼀個指標來記錄當前迴圈的元素是哪⼀個, ⼀開始這個指標指向第0 個.

然後獲取到第0個元素. 緊接著刪除第0個. 這個時候. 原來是第⼀個的元素會⾃動的變成 第0個.

然後指標向後移動⼀次, 指向1元素. 這時原來的1已經變成了0, 也就不會被刪除了.

li = [11, 22, 33, 44]

for i in range(0, len(li)):

del li[i]

print(li)

結果: 報錯

# 刪除的時候li[0] 被刪除之後. 後⾯⼀個就變成了第0個.

# 以此類推. 當i = 2的時候. list中只有⼀個元素. 但是這個時候刪除的是第2個 肯定報錯啊

經過分析發現. 迴圈刪除都不⾏. 不論是⽤del還是⽤remove. 都不能實現. 那麼pop呢?

用pop刪除試一試

for el in li:

li.pop() # pop也不⾏

print(li)

結果:[11, 22]

只有這樣才是可以的:

for i in range(0, len(li)): # 迴圈len(li)次, 然後從後往前刪除

li.pop()

print(li)

或者. ⽤另⼀個列表來記錄你要刪除的內容. 然後迴圈刪除

li = [11, 22, 33, 44]

del_li =

for e in li:

for e in del_li:

li.remove(e)

print(li)

li = [1,2,3,4]

lst = li[:]

for i in lst:

li.remove(i)

print(li)

注意: 由於刪除元素會導致元素的索引改變, 所以容易出現問題. 盡量不要再迴圈中直接去刪除元素. 可以把要刪除的元素新增到另⼀個容器中然後再批量刪除.

dict中的fromkey(),再次重提 可以幫我們通過list來建立⼀個dict

dic = dict.fromkeys(["jay", "jj"], ["周杰倫", "麻花藤"])

print(dic)

結果:

**中只是更改了jay那個列表. 但是由於jay和jj⽤的是同⼀個列表. 所以. 前⾯那個改了. 後面那個也會跟著改 

dict中的元素在迭代過程中是不允許進⾏新增刪除

dic = 

# 刪除key中帶有'k'的元素

for k in dic:

if 'k' in k:

del dic[k] # dictionary changed size during iteration, 在迴圈迭

代的時候不允許進⾏刪除操作

print(dic)

那怎麼辦呢? 把要刪除的元素暫時先儲存在⼀個list中, 然後迴圈list, 再刪除

dic = 

dic_del_list =

# 刪除key中帶有'k'的元素

for k in dic:

if 'k' in k:

for el in dic_del_list:

del dic[el]

print(dic)

# 使用兩個字典進行刪除

dic =

dic1 = dic.copy()

for i in dic1:

dic.pop(i)

print(dic)

set1 = 

for i in set1:

set1.pop()

print(set1)

traceback (most recent call last):

file "/python專案/m2.py", line 224, in for i in set1:

runtimeerror: set changed size during iteration

set1 = 

set2 = set1.copy()

for i in set2:

set1.remove(i)

print(set1)

元組 => 列表 list(tuple)

列表 => 元組 tuple(list)

list=>str str.join(list)

str=>list str.split()

轉換成false的資料:

0,'',none,,(),{},set() ==> false

常見的資料型別的操作

列表 print 第三個元素為 list 2 list 2 2001 print 更新後的第三個元素為 list 2 print 原始列表 list del list 2 print 刪除第三個元素 list 2 元組操作,以下修改元組元素操作是非法的。tup1 0 100 建立乙個新的元組 pri...

字典資料型別 字典常見操作

1.1從字典裡取值,不丟擲異常 d d1 print d.get key not found print d1.get 1,not found print d1.get seq 2,3 print d1.get 2,a b c 獲取字典的值同時刪除該項 print d1.pop 1 none pri...

常見的資料型別

整型 整型包括短整型 short 整型 int 長整型 long 在細分又可以分為有符號型 signed 和無符號型 unsigned 浮點型浮點型包括單精度浮點型 float 雙精度浮點型 double 他們都是有符號的資料型別。布林型布林型的取值只有true 真 和false 假 對於他來說就是...