我有这样的事情:
for i, item in enumerate(weapons):
print "%s : %s" % (i, item)
print "#####"
for i, item in enumerate(weapons):
if item is not 'bananas':
print "%s : %s"%(i, item)
我明白了:
0: apples
1: bananas
2: oranges
3: pears
4: coconuts
#####
0: apples
2: oranges
3: pears
4: coconuts
但我想只在使用它时才增加'i',创建
0: apples
1: oranges
2: pears
3: coconuts
最狡猾的做法是什么?我在for循环之外使用了一个预定义变量,并且每次迭代都将它增加1。像这样。
i = 0
for item in weapons:
if item is not 'bananas':
print "%s : %s"%(i, item)
i += 1
但它看起来很难看。
答案 0 :(得分:4)
将过滤后的项目发送到enumerate
:
weapons = 'apples', 'bananas', 'oranges', 'pears', 'coconuts',
for i, item in enumerate(item for item in weapons if item != 'bananas'):
print "%s : %s"%(i, item)
输出:
0 : apples
1 : oranges
2 : pears
3 : coconuts
答案 1 :(得分:0)
如果您有多个您不想展示的项目(基于falsetru的答案):
do_not_show = ['bananas', 'oranges']
for i, item in enumerate(itm for itm in weapons if itm not in do_not_show):
print "%s : %s"%(i, item)