微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

如何将迭代器分为两个具有交替元素的列表

如何解决如何将迭代器分为两个具有交替元素的列表

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

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。