Python: 列表操作

4 投票
3 回答
613 浏览
提问于 2025-04-15 22:05

我有一个对象列表 L(顺便说一下,这是在 scons 中使用的)。我想创建两个新列表 L1L2,其中 L1 是在 L 的基础上加上一个项目 I1,而 L2 是在 L 的基础上加上一个项目 I2

我本来想用 append 方法,但那样会修改原来的列表。

我该怎么在 Python 中做到这一点呢?(抱歉问了个初学者的问题,我不太用这个语言,只是为了 scons)

3 个回答

2

你可以复制你的列表

>>> x = [1, 2, 3]
>>> y = list(x)
>>> y.append(4)
>>> y
[1, 2, 3, 4]
>>> z = list(x)
>>> z.append(5)
>>> z
[1, 2, 3, 5]

或者使用连接,这样会生成一个新列表

>>> x = [1, 2, 3]
>>> y = x + [4]
>>> z = x + [5]
>>> y
[1, 2, 3, 4]
>>> z
[1, 2, 3, 5]

前者可能更常见一些,但后者在这种情况下也可以正常工作。有些人还会用切片来复制(x[:] 会创建一个包含原列表 x 所有元素的新列表)。这两种方法都不是很糟糕,但我觉得前者有点难懂,后者则有点傻。

3
L1=list(L)

这个代码是用来复制列表的。我想你能明白后面的内容 :)

8
L1 = L + [i1]
L2 = L + [i2]
L1 = L[:]       #make a copy of L
L1.append(i1)

这可能是最简单的方法。另一种选择是先复制列表,然后再添加内容:

撰写回答