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]
#效果实现了,也没问题,就是变量使用有点多。看你选择了