一尘不染

Python程序将列表分为两个具有交替元素的列表

algorithm

你能使它更简单/优雅吗?

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'])

阅读 317

收藏
2020-07-28

共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
2020-07-28