当前位置: 首页 > 面试题库 >

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

班建义
2023-03-14
问题内容

我想将迭代器分为两个具有交替元素的列表。这是一个可行的解决方案。但是,有没有更简单的方法可以达到相同目的呢?

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

问题答案:

如果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


 类似资料:
  • 问题:我希望编写一个脚本,同时循环两个列表,并将列表1中的日期替换为列表2中的日期。因此,很明显,您将使用清单2中的前70个日期替换清单1中的70个日期。之后,我希望将修改后的list1写入一个。txt文件。 我试过了,但我完全卡住了。我是Python的超级noob。

  • 我试图迭代一个分成块的切片,并返回一个元组,其中包含每个块的第n个元素。 示例:

  • 我还有一张这样的单子: 如您所见,中的某些向量与中的向量部分匹配。在某些情况下,中的向量与中的部分向量完全匹配。例如,中的的最后一个值与的第五个组件中的向量匹配,但与之不匹配,尽管存在公共值。在中的中的值(“未达到”、“不是选项”、“省略”)按此顺序一起在中的任何向量中都不匹配。对于中的的值也是相同的。 我试图实现的是将中的每个向量中的元素与中的每个向量进行比较,提取通用的值并以相同的顺序匹配中的

  • 我想在HashMap中搜索重复项。目前这是我的HashMap:

  • 我需要迭代两个元素的所有组合:在集合[1,2,3,4]中,我想迭代[(1,2),(1,3),(1.4),(2,3),,(2,4),(3,4)]。是否有现有的工具可以执行此操作? 这段代码将执行两倍于所需的操作,因为在两个循环中都将访问每个对象。 为此编写自己的方法是微不足道的,我只是不想发明轮子。我期望在Guava或Collections API中找到这个,但是没有找到这样的功能。

  • 我有两个2D数组,都是3x3。 或者更多地澄清一下我想做什么: 所以第一行是: 并对每一行进行相应的处理。