Программа Python для разбиения списка на два списка с чередующимися элементами
Можете ли вы сделать его более простым/элегантным?
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
Ответ 1
Если 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