Python List澄清:无法直接分配值

Sre*_*ree 4 python list python-3.x

鉴于value = [],以下代码片段之间有什么区别?

摘录1:

for i in range(t):
    value[i] = 'yes'
Run Code Online (Sandbox Code Playgroud)

摘录2:

value += input.split()
Run Code Online (Sandbox Code Playgroud)

在第一种情况下,我收到一个错误"IndexError:列表赋值索引超出范围"

第二种情况似乎没有任何错误正常工作.

tim*_*geb 5

在第一个示例中,您尝试'yes'在列表中插入它没有的索引.(因为空列表无法插入任何内容.)

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

my_list += iterable
Run Code Online (Sandbox Code Playgroud)

相当于

my_list.extend(iterable)
Run Code Online (Sandbox Code Playgroud)

演示:

>>> my_list = []
>>> my_list.extend('Hi Sree'.split())
>>> my_list
['Hi', 'Sree']
>>> 
>>> my_list = []
>>> my_list += 'Hi Sree'.split()
>>> my_list
['Hi', 'Sree']
Run Code Online (Sandbox Code Playgroud)

1 input已经是内置函数的名称.使用其他名称,以免影响bultin.