Python列表说明:不能直接赋值

2024-05-23 14:34:05 发布

您现在位置:Python中文网/ 问答频道 /正文

给定value = [],以下代码段之间有什么区别?你知道吗

代码段1:

for i in range(t):
    value[i] = 'yes'

代码段2:

value += input.split()

在第一种情况下,我得到一个错误“IndexError:list assignment index out of range”

第二种情况似乎工作正常,没有任何错误。你知道吗


Tags: inforinputindexvalue代码段错误情况
2条回答

第一个示例尝试访问列表的i元素并将其设置为值。因为你的列表是一个空列表,所以这个元素不存在,因此你会得到一个错误。你知道吗

要使第一个代码段正常工作,必须append值:

values = []
for i in range(t):
    values.append(i)

第二个示例使用这样一个事实:当添加两个带有+的列表时,您将创建一个新列表,其中第二个列表的所有元素都位于末尾。通过使用+=这个新列表被再次分配给values。你知道吗

第二个代码段也可以使用extend

values.extend(input.split())

在第一个示例中,您试图将'yes'插入列表中没有的索引处。(因为空列表没有位置插入任何内容。)

在第二个示例中,您使用iterable input.split()1的元素扩展列表,因为

my_list += iterable

相当于

my_list.extend(iterable)

演示:

>>> my_list = []
>>> my_list.extend('Hi Sree'.split())
>>> my_list
['Hi', 'Sree']
>>> 
>>> my_list = []
>>> my_list += 'Hi Sree'.split()
>>> my_list
['Hi', 'Sree']

1input已经是内置函数的名称。使用另一个名字,以不阴影球。你知道吗

相关问题 更多 >