计算列表中值的实例

时间:2015-11-29 05:22:46

标签: python

我正在尝试计算值在排序列表中显示的次数。 我知道我可以使用count方法,但为什么以下代码不起作用?

lst = []
a = ['polka dot sock\n', 'polka dot sock\n', 'polka dot sock\n', 'red sock\n', 'superhero shirt\n', 'torn jeans\n', 'white shirt\n', 'white shirt\n']
for x in a:
     c = 0
     while x in a:
          c += 1
          a.remove(x)
     lst.append((a, c)) 
print lst 

该代码适用于除红袜子之外的所有内容\ n'并且'破牛仔裤\ n'。这是为什么?这是一个索引问题吗?

1 个答案:

答案 0 :(得分:0)

TL; DR:

是的,这是一个索引问题。 for循环继续递增,并应用于修改后的列表。

长:

如果你添加:

    print x
    print a

a声明后,您将获得以下输出:

    ['polka dot sock\n', 'polka dot sock\n', 'polka dot sock\n', 'red sock\n', 'superhero shirt\n', 'torn jeans\n', 'white shirt\n', 'white shirt\n']
    polka dot sock

    ['red sock\n', 'superhero shirt\n', 'torn jeans\n', 'white shirt\n', 'white shirt\n']
    superhero shirt

    ['red sock\n', 'torn jeans\n', 'white shirt\n', 'white shirt\n']
    white shirt

您可以看到原始列表中polka dot socka[0]superhero shirt为已修改列表的a[1]white shirta[2]再次修改的列表。因此,您的“红色衬衫”和“破牛仔裤”将被跳过,因为它们现在是您修改过的列表中的a[0]a[1]