你好我的同事们。
我是一个相当新的程序员,现在我面临着巨大的困境。我收到了错误:
can only assign an iterable
首先,我不知道这意味着什么。
其次,我将为您的专业人士留下我的代码来批评它:
def num_top(int_lis):
duplic_int_lis = int_lis
int_firs= duplic_int_lis [0]
int_lis[:] = duplic_int_lis [int_firs]
基本上我试图在列表中找到[0]
元素,然后使用该int作为索引位置来查找该索引位置的整数。
答案 0 :(得分:3)
int_lis[:] = duplic_int_lis [int_firs]
表示将duplic_int_lis [int_firs]
的所有项目分配给int_lis
,因此它希望您在RHS上传递可迭代/迭代器。
但是在你的情况下,你传递的是不可迭代的,这是不正确的:
>>> lis = range(10)
>>> lis[:] = range(5)
>>> lis #all items of `lis` replaced with range(5)
[0, 1, 2, 3, 4]
>>> lis[:] = 5 #Non-iterable will raise an error.
Traceback (most recent call last):
File "<ipython-input-77-0704f8a4410d>", line 1, in <module>
lis[:] = 5
TypeError: can only assign an iterable
>>> lis[:] = 'foobar' #works for any iterable/iterator
>>> lis
['f', 'o', 'o', 'b', 'a', 'r']
因为你无法迭代整数,所以错误。
>>> for x in 1: pass
Traceback (most recent call last):
File "<ipython-input-84-416802313c58>", line 1, in <module>
for x in 1:pass
TypeError: 'int' object is not iterable
答案 1 :(得分:1)
切片赋值的RHS必须是可迭代的,而不是标量。考虑切片删除然后添加。
答案 2 :(得分:0)
迭代是一个有多个项目可以迭代的东西(例如:取第一个值做某事,然后第二个做某事等等......)列表,字典,元组,字符串中有几个项目并可以用作迭代。作为一个反例:数字类型不具备可迭代性。
请记住,计算机从#0开始计数,因此:如果您想要列表的第一个值,可以使用
my_list[0]
在你走得更远之前,我建议观看关于循环的视频。 https://www.youtube.com/watch?v=EnSu9hHGq5o