Python:未从列表中删除的项目
Python: items not being removed from list
listsal2 = [1,2,2,3,3,4,5,6,7,8]
listsal3 = []
counter = 0
for i in listsal2:
item = listsal2.count(i)
if item > 1:
counter = item
while counter > 1:
listsal3.append(i)
counter = counter - 1
print (listsal3)
我一直在研究模式功能,但出于某种原因,它保留了列表中的最后几个数字,列表中的项目越多,没有被删除的项目就越多。
编辑:刚刚意识到我忘记了现在在
中的代码的第二部分
EDIT2:代码被缩小并且更易于阅读
EDIT3:更改代码,使重复的数字进入新列表,但它具有列表项的多个数量
感谢大家的帮助,我想我现在已经搞定了
您正在迭代列表的同时修改它。通常不推荐这样做,因为它会破坏迭代。
如果您要删除所有单个元素和重复元素,可以使用以下代码:
l = listsal2
l = [v for i, v in enumerate(l) if l.count(v) > 1 and l.index(v) == i]
这将保留原始列表中的顺序。
在您的情况下,即使您考虑了 i=2
一次,您仍会再次浏览列表 2,因为它存在多次。这就是为什么 2 和 3 两次出现在 listsal3
中的原因。相反,您要做的只是为每个唯一项目浏览一次列表。
listsal2 = [1,2,2,3,3, 4]
newlist = set(listsal2)
listsal3 = []
counter = 0
for i in newlist:
item = listsal2.count(i)
if item > 1:
counter = item
print counter
while counter > 1:
listsal3.append(i)
counter = counter - 1
print listsal2, listsal3
要从列表中获取独特的项目,请将其转换为集合。
另一种方法:
简单地保留一个包含每个唯一元素的计数的列表,取它的最大值,然后追溯到它对应的元素。
newset = set(listsal2)
newlist = list(set)
counts = []
for item in newlist:
counts.append(listsal2.count(item))
maxcount = max(counts)
max_occurring_item = newlist[counts.index(maxcount)]
listsal2 = [1,2,2,3,3,4,5,6,7,8]
listsal3 = []
counter = 0
for i in listsal2:
item = listsal2.count(i)
if item > 1:
counter = item
while counter > 1:
listsal3.append(i)
counter = counter - 1
print (listsal3)
我一直在研究模式功能,但出于某种原因,它保留了列表中的最后几个数字,列表中的项目越多,没有被删除的项目就越多。
编辑:刚刚意识到我忘记了现在在
中的代码的第二部分EDIT2:代码被缩小并且更易于阅读
EDIT3:更改代码,使重复的数字进入新列表,但它具有列表项的多个数量
感谢大家的帮助,我想我现在已经搞定了
您正在迭代列表的同时修改它。通常不推荐这样做,因为它会破坏迭代。
如果您要删除所有单个元素和重复元素,可以使用以下代码:
l = listsal2
l = [v for i, v in enumerate(l) if l.count(v) > 1 and l.index(v) == i]
这将保留原始列表中的顺序。
在您的情况下,即使您考虑了 i=2
一次,您仍会再次浏览列表 2,因为它存在多次。这就是为什么 2 和 3 两次出现在 listsal3
中的原因。相反,您要做的只是为每个唯一项目浏览一次列表。
listsal2 = [1,2,2,3,3, 4]
newlist = set(listsal2)
listsal3 = []
counter = 0
for i in newlist:
item = listsal2.count(i)
if item > 1:
counter = item
print counter
while counter > 1:
listsal3.append(i)
counter = counter - 1
print listsal2, listsal3
要从列表中获取独特的项目,请将其转换为集合。
另一种方法: 简单地保留一个包含每个唯一元素的计数的列表,取它的最大值,然后追溯到它对应的元素。
newset = set(listsal2)
newlist = list(set)
counts = []
for item in newlist:
counts.append(listsal2.count(item))
maxcount = max(counts)
max_occurring_item = newlist[counts.index(maxcount)]