Python: 如何就地改变列表的每个元素

Python: How to change each element of a list in place

假设我有一个列表:

sentence = ['This','is','a','sentence']

我想在除第一个元素之外的每个元素前面添加一个 space。基本上,预期的结果是这样的:

sentence = ['This', ' is', ' a', ' sentence']

我试过这样做:

for word in sentence[1:]:
    word = ' ' + word

但是,这个不会改变 sentence 中的元素(为什么?)。

我可以像这样写一些丑陋的代码:

for i in range(1, len(sentence)):
    sentence[i] = ' ' + sentence[i]

我认为这个可行,但这不是一种优雅的方式...

最符合 Pythonic 的方法是什么?

这是就地完成的:

In [206]: sentence = ['This','is','a','sentence']

In [207]: for i,word in enumerate(sentence[1:],1):
   .....:     sentence[i] = ' '+word
   .....:     

In [208]: sentence
Out[208]: ['This', ' is', ' a', ' sentence']

这个方便的单行线不能就地完成:

In [209]: sentence = ['This','is','a','sentence']

In [210]: sentence = [sentence[0]] + [' '+word for word in sentence[1:]]

In [211]: sentence
Out[211]: ['This', ' is', ' a', ' sentence']