您好我有一个循环,它会计算我的MySQL数据库中的不同记录,然后将这些数字保存到列表中。这是清单:
[1L, 2L, 2L, 5L, 4L, 1L, 1L, 1L, 3L, 1L, 1L, 2L, 2L, 3L, 3L, 1L, 2L, 4L, 2L, 1L, 3L, 1L, 2L, 4L, 1L, 2L, 1L, 1L, 3L, 1L, 3L, 1L, 5L, 2L, 1L, 1L, 5L, 1L, 1L, 1L, 4L, 2L, 1L, 3L, 2L, 1L, 2L, 2L, 2L, 3L, 1L, 1L, 3L, 2L, 2L, 1L, 3L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 2L, 1L, 1L, 1L, 1L, 2L, 1L, 3L, 3L, 1L, 2L, 1L, 1L, 2L, 1L, 1L, 1L, 2L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L]
现在我通过这个列表,我想只留下一个数字(意思是1L,2L等)我正在使用这个循环:
for number in legend:
print number # to check what number it does currently
counter = legend.count(number)
while counter > 1:
legend.remove(number)
counter -= 1
然后我看到它检查1,2,3,4,3,2,1 ......为什么会这样?为什么这个循环不会检查5号?最后,列表看起来像这样:
[5L, 5L, 5L, 4L, 3L, 2L, 1L]
这意味着它有效,但为什么它没有用于5号?
事先提前答案 0 :(得分:7)
只需将其放入set
。
>>> foo = [1,1,1,2,2,3,3,4,1,4,3,6,5,6]
>>> set(foo)
set([1, 2, 3, 4, 5, 6])
这将自动过滤掉所有重复项。也许你甚至可以跳过列表,并将其放在set
中。
答案 1 :(得分:0)
您可能遇到以下问题:
list = [1,2,3,4]
for l in list:
print "Elem ", l
if l == 2:
list.remove(1)
给出输出:
Elem 1
Elem 2
Elem 4
列表在循环中被修改,同时删除一些已经通过你循环的元素正在跳过列表中的一个元素。