如何在列表推导式中修改Python列表的最后一个元素?

3
我有一段代码如下,会抛出无效语法错误:
```python 我有以下代码段,会引发无效语法错误: ```
请注意,保留了HTML标签。
lst = [0, 0, 0]
new_lst = [lst[-1] = i + 1 for i in range(3)]

基本上,我想让new_lst成为一个列表的列表,其中每个列表都是lst但最后一个元素已更改。有什么办法在Python中实现这个功能吗?


2
列表推导式内不允许使用赋值语句。 - Klaus D.
1个回答

12

只有在独立语句中才能进行赋值操作,也就是不能在列表推导式中进行。其他例子包括iffor等控制语句。

In [945]: lst = [0, 0, 0]

In [946]: new_lst = [lst[:-1] + [i + 1] for i in range(3)]

In [947]: new_lst
Out[947]: [[0, 0, 1], [0, 0, 2], [0, 0, 3]]

lst[:-1]会选择除最后一个元素以外的lst中的每个元素,[i+1]将被添加到列表的末尾。


如果它能够正常工作并对您有所帮助,请点赞并接受答案。谢谢! - aydow

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接