python – 同时迭代偶数和奇数列表项

我有一个项目列表(HTML表格行,用Beautiful Soup提取),我需要遍历列表并获得每个循环运行的偶数和奇数元素(我的意思是索引).
我的代码看起来像这样:

for top, bottom in izip(table[::2], table[1::2]):
    #do something with top
    #do something else with bottom

如何使这个代码不那么难看?或者也许是这样做的好方法?

编辑:

table[1::2], table[::2]  => table[::2], table[1::2]

解决方法:

尝试:

def alternate(i):
    i = iter(i)
    while True:
        yield(i.next(), i.next())

>>> list(alternate(range(10)))
[(0, 1), (2, 3), (4, 5), (6, 7), (8, 9)]

此解决方案适用于任何序列,而不仅仅是列表,并且不会复制序列(如果您只想要长序列的前几个元素,它将更有效).

上一篇:python – 如何在使用itertools.tee检查下一个元素时最小化空间成本?


下一篇:Python – 加快列表排列的生成(以及检查Dict中是否有permations的过程)