【问题标题】:Sum one number to every element in a list (or array) in Python将一个数字与 Python 中列表(或数组)中的每个元素相加
【发布时间】:2011-08-10 21:45:20
【问题描述】:

在这里我再次提出我的基本问题,但请耐心等待。

在 Matlab 中,向列表中的元素添加数字相当简单:

a = [1,1,1,1,1]
b = a + 1

b 然后是[2,2,2,2,2]

在 python 中,这似乎不起作用,至少在列表中。

有没有一种简单快速的方法可以将单个数字添加到整个列表中。

谢谢

【问题讨论】:

    标签: python list sum


    【解决方案1】:

    试试这个。 (我修改了这个例子,目的是让它变得不平凡)

    import operator
    import numpy as np
    
    n=10
    a = list(range(n))
    a1 = [1]*len(a)
    an = np.array(a)
    

    operator.add 几乎快两倍以上

    %timeit map(operator.add, a, a1)
    

    比用 numpy 添加

    %timeit an+1
    

    【讨论】:

      【解决方案2】:

      你也可以使用地图:

      a = [1, 1, 1, 1, 1]
      b = 1
      list(map(lambda x: x + b, a))
      

      它给出:

      [2, 2, 2, 2, 2]
      

      【讨论】:

        【解决方案3】:

        如果你想对数字列表进行操作,最好使用 NumPy 数组:

        import numpy
        a = [1, 1, 1 ,1, 1]
        ar = numpy.array(a)
        print ar + 2
        

        给予

        [3, 3, 3, 3, 3]
        

        【讨论】:

          【解决方案4】:

          如果你不想要列表推导:

          a = [1,1,1,1,1]
          b = []
          for i in a:
              b.append(i+1)
          

          【讨论】:

            【解决方案5】:

            使用列表理解:

            >>> L = [1]*5
            >>> [x+1 for x in L]
            [2, 2, 2, 2, 2]
            >>> 
            

            大致翻译为使用 for 循环:

            >>> newL = []
            >>> for x in L:
            ...     newL+=[x+1]
            ... 
            >>> newL
            [2, 2, 2, 2, 2]
            

            或使用地图:

            >>> map(lambda x:x+1, L)
            [2, 2, 2, 2, 2]
            >>> 
            

            【讨论】:

              猜你喜欢
              • 1970-01-01
              • 1970-01-01
              • 2021-09-11
              • 1970-01-01
              • 1970-01-01
              • 2023-03-19
              • 1970-01-01
              • 1970-01-01
              • 1970-01-01
              相关资源
              最近更新 更多