-2

希望你的日子过得好:)

我最近在代码学院网站上学习 python,他们给了我一个关于zip()and的例子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'

对于正常情况,我会首先搜索错误,但问题是,我编写的代码与他们作为解决方案提供给我的代码完全相同。这就是为什么我很困惑并在这里问的原因。是网站的错误还是解决方案有误?

感谢您的关注

4

4 回答 4

2

您应该将 zip 更改为列表:

gradebook = list(gradebook)
gradebook.append(("visual arts", 93))
于 2020-07-18T17:43:15.897 回答
1

因为gradebookzip对象。您可能需要使用

gradebook = list(zip(subjects, grades))
于 2020-07-18T17:40:47.663 回答
1

问题是它zip是一个迭代器,而不是一个序列。我怀疑您有一些旧的或未经测试的代码,与当前的 Python 版本不兼容。您zip的结果可用作for语句的目标,但没有append属性——它是一种特殊类型的函数。

转换很简单:早先列出一个列表:

gradebook = lsit(zip(subjects, grades))

#This code is the problem
gradebook.append(("visual arts", 93))

print(gradebook)
于 2020-07-18T17:41:30.737 回答
1

在这里,“gradebook = zip(subjects, grades)”你正在创建一个 zip 实例,但是为了添加一些东西,你需要使用像这样的列表函数将其作为一个列表 gradebook = list(zip(subjects, grades) )

于 2020-07-18T17:43:37.870 回答