![](/img/trans.png)
[英]Inserting list values from a list to another in a specific order in Python
[英]Inserting values into specific indices in a list in Python
我有两个清单:
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中的0插入索引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”)连接到列表
我究竟做错了什么?
很好的问题是,您使用+
来串联列表 ,但是这里不串联列表,而是将一个带有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
是不可变的 ,通常小int
是单例的:Python中始终只有一个零0
int
。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.