【问题标题】:Python: Append item to list N timesPython:将项目追加到列表N次
【发布时间】:2011-01-11 05:11:23
【问题描述】:

这似乎是 Python 的捷径。我想将一个项目附加到列表 N 次,有效地这样做:

l = []
x = 0
for i in range(100):
    l.append(x)

在我看来,应该有一个“优化”的方法,比如:

l.append_multiple(x, 100)

有吗?

【问题讨论】:

  • 最后选择了l.extend([x] * 100),因为它最适合我的情况。 Amber 获得了最全面的答案。谢谢!
  • 在将它用于任何重要的事情之前,请确保您了解 Python 的引用语义。附加到 l 的 x 都是相同的 x,因此其中一个发生变异会影响到所有的 x(所有一个,引用 100 次)。
  • 澄清一下:我将它用于整数,所以我的使用是安全的。

标签: python list


【解决方案1】:

对于不可变数据类型:

l = [0] * 100
# [0, 0, 0, 0, 0, ...]

l = ['foo'] * 100
# ['foo', 'foo', 'foo', 'foo', ...]

对于通过引用存储并且您可能希望稍后修改的值(如子列表或字典):

l = [{} for x in range(100)]

(第一种方法仅适用于常量值(如整数或字符串)的原因是因为在使用 <list>*<number> 语法时只执行浅拷贝,因此如果您执行类似 [{}]*100 的操作, 你最终会得到 100 个对同一个字典的引用 - 所以更改其中一个会改变它们。由于 int 和字符串是不可变的,这对它们来说不是问题。)

如果要添加到现有列表,可以使用该列表的extend() 方法(结合通过上述技术生成要添加的事物列表):

a = [1,2,3]
b = [4,5,6]
a.extend(b)
# a is now [1,2,3,4,5,6]

【讨论】:

  • 或者将两个建议组合成a.extend(b*n)的形式,其中n是你想要在b中重复元素的次数
【解决方案2】:

使用 extend 将列表推导添加到末尾。

l.extend([x for i in range(100)])

请参阅Python docs 了解更多信息。

【讨论】:

    【解决方案3】:

    Itertools 重复与列表扩展相结合。

    from itertools import repeat
    l = []
    l.extend(repeat(x, 100))
    

    【讨论】:

      【解决方案4】:

      我不得不走另一条路去完成一项任务,但这就是我最终的结果。

      my_array += ([x] * repeated_times)
      

      【讨论】:

        【解决方案5】:

        你可以通过列表理解来做到这一点

        l = [x for i in range(10)];
        

        【讨论】:

          【解决方案6】:
          l = []
          x = 0
          l.extend([x]*100)
          

          【讨论】:

            【解决方案7】:

            您可以多次添加这样的任何值:

            a = [1,2,3]
            b = []
            #if you want to add on item 3 times for example:
            for i in range(len(a)):
                j = 3
                while j != 0:
                    b.append(a[i])
                    j-=1
            #now b = [1,1,1,2,2,2,3,3,3]
            

            【讨论】:

              猜你喜欢
              • 1970-01-01
              • 2020-08-04
              • 2013-11-08
              • 2018-03-01
              • 1970-01-01
              • 2017-02-06
              • 2021-01-09
              • 2015-06-12
              • 2020-05-23
              相关资源
              最近更新 更多