【问题标题】:Using of 2 for loop使用 2 for 循环
【发布时间】:2019-10-17 19:16:21
【问题描述】:

我想从用户那里获取信息,并用 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)

我希望代码的输出是:

姓名 Fuad,18 岁,性别 M

但实际输出是

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

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

【问题讨论】:

  • 对于外循环的每一次迭代,内循环都会完全运行。他们不会以 1:1 的比例运行

标签: python python-3.x list loops for-loop


【解决方案1】:

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

for i, j in zip(name, nameinput):
    print(i,j)

zip 的工作原理可以用下面的例子来说明:

list(zip([1, 2, 3], [4, 5, 6]))
# [(1, 4), (2, 5), (3, 6)]

但是,嵌套循环可以:

>>> [(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)]

如果您逐步考虑循环代码,那么该逻辑应该会变得清晰。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-07-11
    相关资源
    最近更新 更多