对于带有 2 个参数的 for 循环,使用什么函数才是正确的?

R4f*_*R4f 0 python for-loop

我目前陷入困境,不知道应该输入什么功能或代码。希望我能在这里得到一些想法。每当我尝试打印时,它总是给我一个错误。

for i1,i2 in range(len(mc_name, mc_class)):
    i1 = i1 + 1
    i2 = i2 + 1
    print(mc_name[i1] + mc_class[i2])
Run Code Online (Sandbox Code Playgroud)
Error:
for i1,i2 in range(len(mc_name, mc_class)): 
TypeError: len() takes exactly one argument (2 given)
Run Code Online (Sandbox Code Playgroud)

Sam*_*ord 5

看起来你可能想要zip

for i1, i2 in zip(mc_name, mc_class):
    print(i1 + i2)
Run Code Online (Sandbox Code Playgroud)

zip接受任意数量的可迭代对象作为参数,并生成一个单个可迭代对象,该可迭代对象从每个可迭代对象中获取元素——因此它允许您并行地一起迭代两个(或任意数量!)列表。如果输入可迭代对象的长度不等,则一旦其中任何一个被耗尽,它就会停止。

等效的使用len是将两个列表的最小长度作为参数range

for i in range(min(len(mc_name), len(mc_class))):
    print(mc_name[i] + mc_class[i])
Run Code Online (Sandbox Code Playgroud)

zip更受欢迎,因为它更简洁。

如果您不想并行迭代两个列表,而是想要两个列表的乘积(即每个项目与每个其他项目),那么这将是一个嵌套循环:

for i1 in mc_name:
    for i2 in mc_class:
        print(i1 + i2)
Run Code Online (Sandbox Code Playgroud)

或者itertools.product

from itertools import product
for i1, i2 in product(mc_name, mc_class):
    print(i1 + i2)
Run Code Online (Sandbox Code Playgroud)