【问题标题】:List comprehension for series of deltas对一系列增量的列表理解
【发布时间】:2010-05-08 10:48:52
【问题描述】:

您将如何在 python 中编写列表推导以在有序列表中的 n 项目之间生成一系列 n-1 增量?

例子:

L = [5,9,2,1,7]
RES = [5-9,9-2,2-1,1-7] = [4,7,1,6] # absolute values

【问题讨论】:

    标签: python list-comprehension


    【解决方案1】:
    RES = [abs(L[i]-L[i+1]) for i in range(len(L)-1)]
    

    【讨论】:

      【解决方案2】:

      itertools documentationrecipes 部分包含一个名为 pairwise 的函数的源代码,您可以将其用于此目的:

      from itertools import *
      
      def pairwise(iterable):
          "s -> (s0,s1), (s1,s2), (s2, s3), ..."
          a, b = tee(iterable)
          b.next()
          return izip(a, b)
      

      您可以将其复制并粘贴到您的文件中。定义了这个函数后,做你想做的就很简单了:

      l = [5, 9, 2, 1, 7]
      print [abs(a-b) for a,b in pairwise(l)]
      

      结果

      [4, 7, 1, 6] 
      

      【讨论】:

        【解决方案3】:

        刚刚想通了:

        [abs(x-y) for x,y in zip(L[:-1], L[1:])]
        

        【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2013-04-25
        • 2021-10-01
        • 1970-01-01
        • 2010-10-02
        • 2013-01-03
        相关资源
        最近更新 更多