我有两个清单:
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”)连接到列表
我做错了什么?
答案 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
。