希望你的日子过得顺利:(
我最近在代码学院网站上学习python,他们给了我一个关于zip()
和append()
的例子。
last_semester_gradebook = [("politics", 80), ("latin", 96), ("dance", 97), ("architecture", 65)]
subjects = ["physics", "calculus", "poetry", "history"]
grades = [98, 97, 85, 88]
subjects.append("computer science")
grades.append(100)
gradebook = zip(subjects, grades)
#This code is the problem
gradebook.append(("visual arts", 93))
print(list(gradebook))
这是我编写的代码,但它给了我一个错误。
Traceback (most recent call last):
File "script.py", line 9, in <module>
gradebook.append(("visual arts", 93))
AttributeError: 'zip' object has no attribute 'append'
对于正常情况,我会先搜索错误,但问题是,我编写的代码与他们作为解决方案提供给我的代码完全相同。这就是为什么我在这里感到困惑和询问。是网站的错误还是解决方案错误?
感谢您的关注
问题是zip
是迭代器,而不是序列。我怀疑您有一些旧的或未经测试的代码,与当前的Python版本不兼容。zip
结果可用作for
语句的目标,但没有append
属性——这是一种特殊类型的函数。
转换很容易:先从中列出一个列表:
gradebook = list(zip(subjects, grades))
#This code is the problem
gradebook.append(("visual arts", 93))
print(gradebook)
您应该将zip更改为list:
gradebook = list(gradebook)
gradebook.append(("visual arts", 93))
因为gradebook
是zip
对象。您可能需要使用
gradebook = list(zip(subjects, grades))
此处"gradebook=zip(科目、成绩(";您正在创建一个zip实例,但为了调用某些内容,您需要使用下面的list函数将其作为列表gradebook=列表(zip(科目,成绩((