Joining pairs of elements of a list

后端 未结 6 2032
独厮守ぢ
独厮守ぢ 2020-11-27 11:32

I know that a list can be joined to make one long string as in:

x = [\'a\', \'b\', \'c\', \'d\']
print \'\'.join(x)

Obviously this would ou

6条回答
  •  無奈伤痛
    2020-11-27 12:05

    Use an iterator.

    List comprehension:

    >>> si = iter(['abcd', 'e', 'fg', 'hijklmn', 'opq', 'r'])
    >>> [c+next(si, '') for c in si]
    ['abcde', 'fghijklmn', 'opqr']
    
    • Very efficient for memory usage.
    • Exactly one traversal of s

    Generator expression:

    >>> si = iter(['abcd', 'e', 'fg', 'hijklmn', 'opq', 'r'])
    >>> pair_iter = (c+next(si, '') for c in si)
    >>> pair_iter # can be used in a for loop
    
    >>> list(pair_iter) 
    ['abcde', 'fghijklmn', 'opqr']
    
    • use as an iterator

    Using map, str.__add__, iter

    >>> si = iter(['abcd', 'e', 'fg', 'hijklmn', 'opq', 'r'])
    >>> map(str.__add__, si, si)
    ['abcde', 'fghijklmn', 'opqr']
    

    next(iterator[, default]) is available starting in Python 2.6

提交回复
热议问题