清理我的列表

问题描述

| 您好,我有一个循环,该循环对我的MysqL数据库中的不同记录进行计数,然后将数字保存到列表中。这是清单:
[1L,2L,5L,4L,1L,3L,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,1 ...为什么呢?为什么这个循环不会检查数字5?最后,列表如下所示:
[5L,1L]
这意味着它可以工作,但是为什么它不能进入​​第5位呢? 提前     

解决方法

只需将其放入
set
中即可。
>>> foo = [1,1,2,3,4,6,5,6]
>>> set(foo)
set([1,6])
这将自动过滤掉所有重复项。也许您甚至可以跳过列表,将其放在第一位a3ѭ中。     ,您可能会遇到以下问题:
list = [1,4]
for l in list:
    print \"Elem \",l
    if l == 2:
        list.remove(1)
给出输出:
Elem  1
Elem  2
Elem  4
列表是在循环中修改的,在删除已循环遍历的某些元素时,您将跳过列表中的一个元素。