我正在尝试计算值在排序列表中显示的次数。 我知道我可以使用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'。这是为什么?这是一个索引问题吗?
答案 0 :(得分:0)
是的,这是一个索引问题。 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 sock
为a[0]
,superhero shirt
为已修改列表的a[1]
,white shirt
为a[2]
再次修改的列表。因此,您的“红色衬衫”和“破牛仔裤”将被跳过,因为它们现在是您修改过的列表中的a[0]
和a[1]
。