代码之家  ›  专栏  ›  技术社区  ›  Carson Myers

我如何才能理解这个简单的列表?

  •  4
  • Carson Myers  · 技术社区  · 15 年前

    我对python是个新手,我想更好地了解列表的理解。
    我甚至不确定列表理解是否是我要找的词,因为我没有生成列表。但我也在做类似的事情。

    这就是我要做的:

    我有一个数字列表,其长度可以被三整除。

    所以说我有 nums = [1, 2, 3, 4, 5, 6] 我想迭代列表,得到每组三位数的和。 目前我正在做:

    for i in range(0, len(nums), 3):
        nsum = a + b + c for a, b, c in nums[i:i+3]
        print(nsum)
    

    我知道这是错的,但有办法吗?我肯定我忽略了一些很简单的事情…但我想不出另一种方法来做这件事。

    3 回复  |  直到 14 年前
        1
  •  6
  •   gimel    15 年前

    sum(iterable[, start] ) 内置,并在切片上使用。

    从左到右求和iterable的开始和项,并返回总计。启动默认值为0。iterable_s项通常是数字,不允许是字符串。

    >>> nums
    [1, 2, 3, 4, 5, 6]
    >>> [sum(nums[i:i+3]) for i in  range(0, len(nums),3)]
    [6, 15]
    >>> 
    
        2
  •  4
  •   Ignacio Vazquez-Abrams    15 年前
    import itertools
    
    nums = [1, 2, 3, 4, 5, 6]
    
    print [a + b + c for a, b, c in itertools.izip(*[iter(nums)] * 3)]
    
        3
  •  1
  •   Harish    15 年前
    nums = [1, 2, 3, 4, 5, 6]
    map(sum, itertools.izip(*[iter(nums)]*3))