请理解,我搜索了这个,它已经有了答案.但是我正在寻找一种不同的方法来获得这个结果.这可能被标记为重复,虽然我认为这可能使用itertools (最有可能groupby)有一个更清晰的答案.
说我有一个清单data.我希望一次有3个值,假设列表是值的数量,以便最后排除不正确的值.
data = [1, 2, 3, 4, 5, 6,...]
Run Code Online (Sandbox Code Playgroud)
这是我想要遍历列表的方式(这段代码显然不起作用):
for a, b, c in data:
#perform operations
pass
Run Code Online (Sandbox Code Playgroud)
现在有了上面的代码,我想a, b, c成为1, 2, 3然后4, 5, 6分别在每个迭代.我确信那里有一个更清洁的方法,而不是我链接的答案.
对于那些不想点击链接以查看我所指的方法的懒人,这里是:
如果要通过成对的连续元素遍历列表,则可以使用切片:
Run Code Online (Sandbox Code Playgroud)>>>myList = [4, 5, 7, 23, 45, 65, 3445, 234] >>>for x,y in (myList[i:i+2] for i in range(0,len(myList),2)): print(x,y) 4 5 7 23 45 65 3445 234
这是一个hacky解决方案:iter和zip:
i = [1, 2, 3, 4, 5, 6]
d = iter(i)
for a, b, c in zip(*[d]*3):
print(a, b, c)
Run Code Online (Sandbox Code Playgroud)
输出:
1 2 3
4 5 6
Run Code Online (Sandbox Code Playgroud)
此外,如果你想让它遍历的一切,当你最初的名单是不是由三个可以用整除zip_longest的itertools:
from itertools import zip_longest
i = [1, 2, 3, 4, 5, 6, 7]
d = iter(i)
for a, b, c in zip_longest(*[d]*3):
print(a, b, c)
Run Code Online (Sandbox Code Playgroud)
输出:
1 2 3
4 5 6
7 None None
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
81 次 |
| 最近记录: |