Python 我如何 link 2 个列表?

Python how do I link 2 lists?

我有 2 个列表

[902920,28393892,93993992,93938939929,929393993928,38982933939393, 883383938393]
[1.9, 1,7, 1,6]

基本上 1.9 link 到 902920,28393892,93993992 1.7 link 到 93938939929,929393993928,38982933939393

在for循环中我需要 request.get(1.9,然后是第一个列表中的 3 个数字) 然后 1.7 和接下来的 3 个数字

无论如何要做到这一点link?

抱歉,我应该提到 1.6 可以 linked 到列表中的下两个数字,另一个数字 1.5 可以 linked 到下一个 7。

more-itertools 具有此 grouper 功能,可用于此任务。我replicate it这里:

from itertools import zip_longest
def grouper(iterable, n, *, incomplete='fill', fillvalue=None):
    "Collect data into non-overlapping fixed-length chunks or blocks"
    # grouper('ABCDEFG', 3, fillvalue='x') --> ABC DEF Gxx
    # grouper('ABCDEFG', 3, incomplete='strict') --> ABC DEF ValueError
    # grouper('ABCDEFG', 3, incomplete='ignore') --> ABC DEF
    args = [iter(iterable)] * n
    if incomplete == 'fill':
        return zip_longest(*args, fillvalue=fillvalue)
    if incomplete == 'strict':
        return zip(*args, strict=True)
    if incomplete == 'ignore':
        return zip(*args)
    else:
        raise ValueError('Expected fill, strict, or ignore')

此函数以如下所示的方式与 zip (documentation) 结合 returns 一个元组的迭代器,其中元组的第一个元素是来自 [=18= 的元素],元组的第二个元素是取自 a 的三个元素的元组。对于此示例,zip 返回的迭代器将 1.9 链接到 a 的前三个元素,1.7 链接到 a 的后三个元素,依此类推上。

a = [902920,28393892,93993992,93938939929,929393993928,38982933939393, 883383938393]
b = [1.9, 1.7, 1.6]

c = zip(b, grouper(a, 3))

for item in c:
    print(item)

输出

(1.9, (902920, 28393892, 93993992))
(1.7, (93938939929, 929393993928, 38982933939393))
(1.6, (883383938393, None, None))

grouper 函数提供了额外的功能。默认情况下,长 a 列表中没有足够的元素来填充三元组,空元素将用 None 填充。因此,如果您希望获得 None 以外的值,您可以将 fillvalue 设置为其他值,或者您甚至可以声明您不想要不完整的元组,如本例所示

c = zip(b, grouper(a, 3, incomplete = 'ignore'))

for item in c:
    print(item)

输出

(1.9, (902920, 28393892, 93993992))
(1.7, (93938939929, 929393993928, 38982933939393))