在Python中将值插入列表中的特定索引

时间:2017-05-20 16:12:50

标签: python list insert concatenation

我有两个清单:

l1 = [254, 255, 254, 254, 254, 254, 255, 255, 254]
l2 = [(255, 255, 255, 0), (255, 255, 255, 0), (255, 255, 255, 0)]

我想修改l1并将l2从l2插入到索引3,7和11中,所以l1看起来像这样:

[254, 255, 254, 0, 254, 254, 254, 0, 255, 255, 254, 0]

我使用此代码时可以使用:

l1.insert(3, l2[0][-1])
l1.insert(7, l2[1][-1])
l1.insert(11, l2[2][-1])

但是当我尝试不使用insert()函数时:

l1 = l1[:3] + l2[0][-1] + l1[3:]
l1 = l1[:7] + l2[1][-1] + l1[7:]
l1 = l1[:11] + l2[2][-1] + l1[11:]

我收到错误:

  

TypeError:只能将列表(不是“int”)连接到列表

我做错了什么?

1 个答案:

答案 0 :(得分:5)

问题是您使用+连接列表,但是在这里您不连接列表,您将列表与带有列表的int连接起来。事实上:

l1 = l1[:3] + l2[0][-1] + l1[3:]
#    ^ list   ^ int       ^ list

你可以通过将第二个参数作为一个列表来解决问题(例如用方括号括起来):

l1 = l1[:3] + [l2[0][-1]] + l1[3:]
#    ^ list   ^ list        ^ list

然而,更好地使用insert :它更不容易出错(我们可以假设它经过有效测试),而且通常更有效率(因为插入是在地方完成的)。

最后请注意,如果您插入0,则 不会影响0来自的地方:int s 不可变,通常是小int个,是单例:Python中始终只有一个零0 int