大多数pythonic方式枚举破桌子?

时间:2014-05-03 16:03:34

标签: python for-loop enumeration

我有这样的事情:

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

但它看起来很难看。

2 个答案:

答案 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)