Python: 列表操作
我有一个对象列表 L
(顺便说一下,这是在 scons 中使用的)。我想创建两个新列表 L1
和 L2
,其中 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)
这可能是最简单的方法。另一种选择是先复制列表,然后再添加内容: