连续调用两个 zip 函数时出错



我有两个列表,id和name,我想将它们压缩在一起并以两种不同的方式输出它们。第一种方法分隔压缩元组,并在字符串中输出 ID 以及相应的名称。第二种方法应该只输出压缩元组本身。

当我运行此代码时,第一个 for 循环在收到以下错误之前执行:

Traceback (most recent call last):
File "c:UsersAlanDesktoptest.py", line 7, in <module> for item in zip(id,name):
TypeError: zip argument #1 must support iteration

令人困惑的部分是,如果我注释掉一个 for 循环并单独运行另一个,我可以成功运行每个循环。由于传入的两个参数都是可迭代列表,因此我不确定为什么错误说第一个参数必须支持迭代。任何帮助,不胜感激。

id=[117,234,821,257,265,489]
name=['john','max','aaron','jim','sierra','kat']
for id, name in zip(id,name):
print(f'ID {id} is associated with {name}')
for item in zip(id,name):
print(item)
# just change the first for loop variable name to something other than id
id=[117,234,821,257,265,489]
name=['john','max','aaron','jim','sierra','kat']
for idx, name in zip(id,name):
print(f'ID {idx} is associated with {name}')
for item in zip(id,name):
print(item)

问题是您在第一个 for 循环中用于变量和列表的名称相同,因此当您在第二个 for 循环中再次调用 id 和 name 时,这些名称引用变量而不是列表。以下示例应该有效。(也避免使用 id,因为正如已经提到的,它是 python 的内置函数。

ids=[117,234,821,257,265,489]
names=['john','max','aaron','jim','sierra','kat']
for idx, name in zip(ids,names):
print(f'ID {idx} is associated with {name}')
for item in zip(ids,names):
print(item)

最新更新