【问题标题】:Inserting values into specific indices in a list in Python将值插入到 Python 列表中的特定索引中
【发布时间】:2017-05-20 16:12:49
【问题描述】:

我有两个列表:

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”)连接到列表

我做错了什么?

【问题讨论】:

    标签: python list insert concatenation


    【解决方案1】:

    问题是您使用+连接列表,但这里您不连接列表,而是将列表与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 的来源无关ints 是不可变的,并且通常很小@ 987654329@s,是单例:在 Python 中始终只有一个零 0 int

    【讨论】:

      猜你喜欢
      • 2021-03-25
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-11-19
      • 2015-10-09
      • 2019-05-04
      • 2015-07-27
      • 2018-11-22
      相关资源
      最近更新 更多