【问题标题】:Python List : The different between the elements of a same list [closed]Python List:同一个列表的元素之间的差异[关闭]
【发布时间】:2013-06-05 17:44:15
【问题描述】:

例子:

Nums = [5,17,21,29]
Result = [12,16,24]

计算

absolute(5-17) = 12
absolute(5-21) 
abs(5-24)

【问题讨论】:

    标签: python list


    【解决方案1】:
    >>> Nums = [5,17,21,29]
    >>> [abs(Nums[0] - x) for x in Nums[1:]]
    [12, 16, 24]
    

    如果您使用非常大的列表,则可以使用 itertools.islice 避免浅表复制 [1:](尽管这几乎没有必要)

    >>> from itertools import islice
    >>> [abs(Nums[0] - x) for x in islice(Nums, 1, None)]
    [12, 16, 24]
    

    【讨论】:

      【解决方案2】:

      如果你想用剩余的元素减去第一个元素,

      Result = [abs(Nums[0] - item) for item in Nums[1:]]
      

      【讨论】:

        【解决方案3】:

        如果您只处理第一项,那么您可以使用iter() 创建一个迭代器,这对于大型列表来说会比@karthikr/@jamylak 的版本更节省内存并且可能更快:

        >>> lis = [5,17,21,29]
        >>> it = iter(lis)
        >>> item = next(it)
        >>> [abs(item - x) for x in it]
        [12, 16, 24]
        

        另一种适用于任何索引而不仅仅是第 0 位的解决方案:

        >>> n = 0
        >>> [abs(lis[n] - x) for i,x in enumerate(lis) if i != n]
        [12, 16, 24]
        >>> n = 1
        >>> [abs(lis[n] - x) for i,x in enumerate(lis) if i != n]
        [12, 4, 12]
        

        【讨论】:

        • +1 如果列表很大以避免浅拷贝,我会这样做
        猜你喜欢
        • 2013-10-16
        • 2011-01-24
        • 1970-01-01
        • 2021-02-13
        • 1970-01-01
        • 1970-01-01
        • 2020-02-09
        • 2015-04-02
        • 2018-06-22
        相关资源
        最近更新 更多