问题描述
如果seq
是一个序列,则:
def zigzag(seq):
return seq[::2], seq[1::2]
如果seq
是完全通用的可迭代对象,例如生成器:
def zigzag(seq):
results = [], []
for i, e in enumerate(seq):
results[i%2].append(e)
return results
解决方法
我想将迭代器分为两个具有交替元素的列表。这是一个可行的解决方案。但是,有没有更简单的方法可以达到相同目的呢?
def zigzag(seq):
"""Return two sequences with alternating elements from `seq`"""
x,y = [],[]
p,q = x,y
for e in seq:
p.append(e)
p,q = q,p
return x,y
样本输出:
>>> zigzag('123456')
(['1','3','5'],['2','4','6'])