Skip to main content
 首页 » 编程设计

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

2025年05月04日22kerrycode

我有两个列表:

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: can only concatenate list (not "int") to list

我做错了什么?

请您参考如下方法:

问题是您使用 + 来连接列表,但在这里您没有连接列表,而是使用 int 连接列表> 有一个列表。确实:

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

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

l1 = l1[:3] + <b>[</b>l2[0][-1]<b>]</b> + l1[3:] 
#    ^ list   ^ list        ^ list

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

最后请注意,如果您插入 0,0 的来源并不重要:int s 是不可变的,通常是小的 int,是单例:始终只有一个零 0 int 在 Python 中。