代码之家  ›  专栏  ›  技术社区  ›  Yuval Adam

三角洲系列的列表理解

  •  1
  • Yuval Adam  · 技术社区  · 15 年前

    如何用python编写一个列表理解来生成一系列 n-1 三角洲间 n 排序列表中的项目?

    例子:

    L = [5,9,2,1,7]
    RES = [5-9,9-2,2-1,1-7] = [4,7,1,6] # absolute values
    
    3 回复  |  直到 15 年前
        1
  •  5
  •   Johannes Charra    15 年前
    RES = [abs(L[i]-L[i+1]) for i in range(len(L)-1)]
    
        2
  •  4
  •   Mark Byers    15 年前

    这个 recipes 剖面图 itertools documentation 包括可用于此目的的名为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
  •  2
  •   Yuval Adam    15 年前

    我想出来了:

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