gpt4 book ai didi

Python - 为什么 enumerate() 导致稍后的 zip() 仅从列表中的最后一项中提取?

转载 作者:行者123 更新时间:2023-12-05 09:25:51 24 4
gpt4 key购买 nike

代码:

boylist = ['Jim', 'James', 'Jack', 'John', 'Jason']
for i, boylist in enumerate(boylist):
print(f'Index {i} is {boylist} in my list')
#boylist = ['Jim', 'James', 'Jack', 'John', 'Jason']
girllist = ['Emma', 'Clara', 'Susan', 'Jill', 'Lisa']
for boylist, girllist in zip(boylist, girllist):
print(f'{boylist} and {girllist} form a nice couple')\

输出:

Index 0 is Jim in my list
Index 1 is James in my list
Index 2 is Jack in my list
Index 3 is John in my list
Index 4 is Jason in my list
J and Emma form a nice couple
a and Clara form a nice couple
s and Susan form a nice couple
o and Jill form a nice couple
n and Lisa form a nice couple

当我取消注释第 4 行时,输出是正确的,并且打印了每个全名。所以我的问题是为什么会这样?枚举对导致此行为的列表做了什么?我如何在不重新声明原始列表的情况下解决这个问题?

我试过尝试并打印出枚举列表和压缩列表的输出,但我不明白是什么原因造成的。希望看到列表索引地址可能停留在最终值,但我无法找到任何内容或重置此地址。

最佳答案

因为您在第一个 for 循环中使用了 boylist 作为迭代变量。因此每次迭代都将 boylist 设置为原始列表的元素之一。在循环结束时,boylist 包含最后一个男孩的名字。因此,第二个循环遍历 Jason 的角色,而不是原始 boylist 中的名字。

不要像这样重用变量,使用

boylist = ['Jim', 'James', 'Jack', 'John', 'Jason']
for i, boy in enumerate(boylist):
print(f'Index {i} is {boy} in my list')

girllist = ['Emma', 'Clara', 'Susan', 'Jill', 'Lisa']
for boy, girl in zip(boylist, girllist):
print(f'{boy} and {girl} form a nice couple')

关于Python - 为什么 enumerate() 导致稍后的 zip() 仅从列表中的最后一项中提取?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/75010911/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com