pythonlist循環刪除
A. python如何實現刪除某list中所有重復出現的元素
1. 使用內置函數set
lists = [1,1,2,3,4,6,6,2,2,9]
lists = list(set(lists))
先將列表轉換為集合,因為集合是不重復的,故直接刪除重復元素,而且輸出結果為排序後的
B. python 刪除數組內含有0,2,4的數據,然後搜索循環數,刪除除循環數以外的數
#-*-coding:utf-8-*-
#首先寫個函數為1個數生成它的循環數
defget_loop_number(n):
n=str(n)
return[n[i:]+n[:i]foriinrange(len(n))]
a=[1,2,14,204,123,178,781,15,51,41,14,817,101]
#轉成字元串
l=[str(x)forxina]
#生成個集合,後面會用到集合運算
s=set(l)
#保存結果用
result=[]
forxinl:
if'0'inxor'2'inxor'4'inx:
continue
else:
#把循環數列表也轉成集合
loop_set=set(get_loop_number(x))
#這樣可以用集合的運算,直接判斷整個循環數是否在大的集合中
ifloop_set.issubset(s):
#整個循環數都在,它自己當然也在啦
#如果不考慮數字的順序,這里已經可以把整個loop_set加到結果中了
#只是前面要多一個判斷,判斷當前數字是否已經加過了
result.append(x)
printresult
C. python 遍歷dict,刪除其中元素時報錯!
dictionary changed size ring iteration 在iteration 的時候不能改變字典的尺寸
D. python如何刪除list里重復的元素
這個可簡單可復雜。
簡單的:利用集合
a=list(set(a))#這樣就可以了,是不是很簡單
復雜的:
就是先對列表排序,然後比較相鄰元素是否相同,相同的則刪除後面的。大體演算法思路,代碼自己寫吧
當然還有其他的演算法...
-----------------------------------------------------------------------------------
額, 不好意思,看錯了
defQ(a):
aa=[]
foriina:
ifa.count(i)==1:
aa.append(i)
returnaa
這個就可以了,利用 list.count(obj) 計算obj在list中出現的次數進行判斷
E. python (1-10)數組中每數4個數刪除一個,循環計算直到只剩1個數
x為[i for i in range(1,11,1)]
l=len(x)
idx=0
while idx<l and l>l:
idx = (idx+4)% l
x.pop(idx)
l -= 1
F. python實現給定一個列表判斷裡面是否有重復元素
有兩個方法:
使用列表的count方法,因為count方法可以做對象內的元素進行出現次數疊加計算
list1=[1,2,3,4,4,5,6,7]
list1.count(1)#結果為1
list1.count(4)#結果為2
foriinlist1:
iflist1.count(i)>=2:
print('該元素%s重復'%i)
#結果:
該元素4重復
該元素4重復#因為迭代了兩次4所以有兩次輸出,功能是實現了,但是卻列印了兩次,有點不理想
2.借用工廠函數set()把對象轉為集合和列表的方法(淺復制),集合會默認把重復元素去掉
list1=[1,2,3,4,4,5,6,7]
list2=list1.()#為了不破壞原數據,臨時淺復制給變數list2
list3=list(set(list2))#使用set()函數將list2轉為集合去掉重復元素又用list()轉回列表
foriinlist3:#對無重復元素的列表list3迭代
ifiinlist2:
list1.remove(i)#當list3內的元素存在於list2中,則把其元素從list2中刪除,最後就會留下重復元素
print('list1:%s中的重復元素有:%s'%(list1,list2))#組後輸出原數據list1和最終結果list2
#結果:
list1:[1,2,3,4,4,5,6,7]中的重復元素有:[4]
#效果實現了,也沒問題,就是變數使用有點多。看你選擇了