我有一个嵌套循环:
adj = ["red", "big", "tasty"]
fruits = ["apple", "banana", "cherry"]
for x in adj:
for y in fruits:
print(x, y)
通过阅读,我期望输出为:
red apple
big banana
tasty cherry
有人能给我解释一下为什么我会这样吗
red apple
red banana
red cherry
big apple
big banana
big cherry
tasty apple
tasty banana
tasty cherry
我真的很困惑,无法解决它
非常感谢
每次循环运行时,循环内的所有事情都会发生(尽管可能会短路或退出循环:
break
、continue
、return
来自封闭函数,或引发本地未捕获的异常,或任何迫使程序立即退出的事情,如拔出电源插头:)内部循环位于外部循环内部(这就是嵌套它们的意义),因此每次通过外部循环时,整个内部循环都会单独发生,并重复发生
第一次运行外部循环时,
x
被设置为'red'
。因此,该值用于内部循环的每个迭代,并因此与每个y
值配对。对于其余的迭代,依此类推如果您想要您期望的行为,请参见How to iterate through two lists in parallel?
循环第一个列表,对于第一个列表中的每个项目,循环第二个列表中的所有项目
就这样
等等
通过使用
enumerate
,您可以尝试更清楚地了解引擎盖下正在发生的事情,但这有点复杂,最终可能会使事情变得更加困难正如Karl Knechtel在他的回答中提到的,您可以同时使用
zip
对列表进行迭代首先选择
x = 'red'
,通过将每个水果分配给内部循环中的y
来打印每个水果然后选择
x = 'big'
,通过在内部循环中将每个水果分配给y
来打印每个水果,依此类推要获得所需的输出,首先需要将列表压缩在一起,然后在循环中打印
输出:
相关问题 更多 >
编程相关推荐