gpt4 book ai didi

python - 同时遍历列表的偶数项和奇数项

转载 作者:太空狗 更新时间:2023-10-30 02:06:46 33 4
gpt4 key购买 nike

我有一个项目列表(它们是 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]

最佳答案

izip 是一个不错的选择,但这里有一些替代方案,因为您对它不满意:

>>> def chunker(seq, size):
... return (tuple(seq[pos:pos+size]) for pos in xrange(0, len(seq), size))
...
>>> x = range(11)
>>> x
[0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10]
>>> chunker(x, 2)
<generator object <genexpr> at 0x00B44328>
>>> list(chunker(x, 2))
[(0, 1), (2, 3), (4, 5), (6, 7), (8, 9), (10,)]
>>> list(izip(x[1::2], x[::2]))
[(1, 0), (3, 2), (5, 4), (7, 6), (9, 8)]

如您所见,这样做的好处是可以正确处理数量不均的元素,这些元素对您来说可能重要也可能不重要。还有这个食谱来自 itertools documentation itself :

>>> def grouper(n, iterable, fillvalue=None):
... "grouper(3, 'ABCDEFG', 'x') --> ABC DEF Gxx"
... args = [iter(iterable)] * n
... return izip_longest(fillvalue=fillvalue, *args)
...
>>>
>>> from itertools import izip_longest
>>> list(grouper(2, x))
[(0, 1), (2, 3), (4, 5), (6, 7), (8, 9), (10, None)]

关于python - 同时遍历列表的偶数项和奇数项,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/974219/

33 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com