【问题标题】:Subtract a value from every number in a list in Python?从Python列表中的每个数字中减去一个值?
【发布时间】:2011-06-22 13:12:55
【问题描述】:

我有一个清单

 a = [49, 51, 53, 56]

如何从列表中的每个整数值中减去 13?

【问题讨论】:

    标签: python python-3.x


    【解决方案1】:

    list comprehension:

    a = [x - 13 for x in a]
    

    【讨论】:

    • def minus13(a): 放在上面一行并缩进一层。
    • 为什么 a[:] 在 lhs 上而不是仅仅分配回 aa[:] 不会创建列表的副本吗?
    • 应该做的是函数应该返回列表推导中的值,并且调用者应该决定在适当的时候替换现有的序列。
    • @istruble:直接分配给 a 也可以。所以a = [x - 13 for x in a] 也能正常工作,而且不会那么混乱。
    【解决方案2】:

    如果您经常使用数字,您可能想看看NumPy。它使您可以直接对数值数组执行各种操作。例如:

    >>> import numpy
    >>> array = numpy.array([49, 51, 53, 56])
    >>> array - 13
    array([36, 38, 40, 43])
    

    【讨论】:

    • 我做了一个快速测试,它返回一个新数组,而原始数组保持不变。
    【解决方案3】:

    你可以使用map()函数:

    a = list(map(lambda x: x - 13, a))
    

    【讨论】:

    • @Frost.baka 在 Python 3 中,map 返回 map 对象。在 Python 2 中,它返回列表。
    【解决方案4】:

    澄清由于 cmets 中的问题而已发布的解决方案

    import numpy
    
    array = numpy.array([49, 51, 53, 56])
    array = array - 13
    

    将输出:

    数组([36, 38, 40, 43])

    【讨论】:

      【解决方案5】:

      这将起作用:

      for i in range(len(a)):
        a[i] -= 13
      

      【讨论】:

      • 列表理解解决方案更加 Pythonic。你可能会喜欢他们。 docs.python.org/tutorial/…
      • 谁删除了我的评论? - 我看不出计算 a 的长度有什么意义。做一个简单的计算。
      • 如果要以这种方式表达算法,则计数对于索引变量 (i) 遍历所有可能的索引值是必要的。需要这个索引变量来改变列表中的每个元素。
      • 在 python 中同时使用 range 和 len 几乎总是一种代码味道,就像上面给出的众多示例一样,总是有更好的方法。
      猜你喜欢
      • 1970-01-01
      • 2012-08-19
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2023-03-20
      • 2020-06-18
      相关资源
      最近更新 更多