使用 2 for 循环

-1 python loops for-loop list python-3.x

我想从用户那里获取信息,并用 for 循环显示它。我写了这段代码:

name=["Name","Age","Gender"]
n=str(input())
a=int(input())
g=str(input())
nameinput=[n,a,g]
for i in name:
    for j in nameinput:
        print(i,j)
Run Code Online (Sandbox Code Playgroud)

我希望代码的输出是:

姓名 Fuad,年龄 18,性别 M

但实际输出是

姓名 Fuad 姓名 18 姓名 M 年龄 Fuad 年龄 18 年龄 M 性别 Fuad 性别 18 性别 M

我如何解决这个问题,请你解释为什么我的代码没有运行

sch*_*ggl 5

您正在执行迭代笛卡尔积的嵌套循环( 的每个元素name都与 的每个元素配对nameinput)。您想要多个可迭代对象进行成对迭代,这是通过zip以下方式实现的:

for i, j in zip(name, nameinput):
    print(i,j)
Run Code Online (Sandbox Code Playgroud)

zip可以通过以下示例说明其工作原理:

list(zip([1, 2, 3], [4, 5, 6]))
# [(1, 4), (2, 5), (3, 6)]
Run Code Online (Sandbox Code Playgroud)

然而,嵌套循环可以:

>>> [(i, j) for i in [1, 2, 3] for j in [4, 5, 6]]
[(1, 4), (1, 5), (1, 6), (2, 4), (2, 5), (2, 6), (3, 4), (3, 5), (3, 6)]
Run Code Online (Sandbox Code Playgroud)

如果您一步一步地思考循环代码,那么该逻辑应该变得清晰。