python - 以特定间隔循环遍历多个列表

标签 python python-3.x list loops dictionary

我有两个列表。一个带有名称,一个带有与第一个列表中的名称对应的编号(对应的名称和编号在每个列表中位于相同的索引点)。我需要在一个只能处理 25 个不同名称和点的 url 中引用每个名称和数字。

pointNames = ['name1', 'name2', 'name3']
points = ['1', '2', '3']  #yes, the numbers are meant to be strings

我的实际列表中每个列表大约有 600 个值。我想要做的是同时遍历每个列表,但以 25 为增量。我可以使用以下方法对单个列表执行此操作:

def chunker(seq, size):
    return (seq[pos:pos + size] for pos in range(0, len(seq), size))

for group in chunker(pointNames, 25):
    print (group)

这将从列表中打印多组 25 个值,直到它遍历整个列表。我想这样做,但有两个列表。我可以使用 for(point, name) in zip(points, pointNames): 完全打印每个列表,但我需要它以 25 个为一组。

我也试过将这两个列表组合成一个字典:

dictionary = dict(zip(points, pointNames))

for group in chunker(dictionary, 25):
    print (group)

但我收到以下错误:

TypeError: unhashable type: 'slice'

最佳答案

生成器会更有效率:

import itertools

def chunker(size, *seq):
    seq = zip(*seq)
    while True:
        val = list(itertools.islice(seq, size))
        if not val:
            break
        yield val


for group in chunker(2, pointNames, points):
    print(group)

gen_groups = chunker(2, pointNames, points, pointNames, points)
group = next(gen_groups)
print(group)

使用 *seq 允许您提供任意数量的列表作为参数。

关于python - 以特定间隔循环遍历多个列表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49519912/

相关文章:

python - 如何将初始数据附加到新的 wtforms FormField 作为默认值?

Python 从字典更新对象

python - 将 pyautogui 与多个显示器一起使用

python - matplotlib 图中的条形大小不一致

Python如何找到列表中的最大元素

python - 在Python中,如何对一手扑克(列表)进行排序并检测它是顺子还是皇家同花顺

c# - 在没有 Linq 的情况下使用字符串对 List<T> 进行排序

python - 替换 pandas 中两列的值

python-3.x - 运动过程中的 Kivy 旋转

python-3.x - 使用 matplotlib 将 3D 散点图动画化为 gif 最终为空