繁体   English   中英

将值插入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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM