3

私はリストを持っています

a = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]

それらをペアで機能させるエレガントな方法はありますか? 私の予想アウトは

[(1, 2), (3, 4), (5, 6), (7, 8), (9, 10)]
4

5 に答える 5

9
pairs = zip(*[iter(a)]*2)

は一般的なイディオムです

于 2013-03-31T16:24:44.947 に答える
6
[(a[2*i], a[2*i+1] ) for i in range(len(a)/2)]

これはもちろん、len(a) が偶数であることを前提としています。

于 2013-03-31T16:25:26.850 に答える
3
def group(lst, n):
    """group([0,3,4,10,2,3], 2) => [(0,3), (4,10), (2,3)]

    Group a list into consecutive n-tuples. Incomplete tuples are
    discarded e.g.

    >>> group(range(10), 3)
    [(0, 1, 2), (3, 4, 5), (6, 7, 8)]
    """
    return zip(*[lst[i::n] for i in range(n)]) 

activestate から、2 タプルだけでなく n タプルのレシピ

于 2013-03-31T16:25:40.547 に答える
1
b = []
for i in range(0,len(a),2):
    b.append((a[i],a[i+1]))
a = b
于 2013-03-31T16:24:29.740 に答える
0

スライスと zip を使用してみてください。

>>> a = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]
>>> zip(a[::2],a[1::2])
[(1, 2), (3, 4), (5, 6), (7, 8), (9, 10)]
于 2013-03-31T17:39:28.180 に答える