【问题标题】:What does it mean to flatten an iterator?扁平化迭代器是什么意思?
【发布时间】:2012-08-23 14:32:57
【问题描述】:

我想知道扁平化是什么意思,例如展平迭代器的迭代器。你能告诉我吗?是否有任何 C/Java/Python 习惯用法?

【问题讨论】:

    标签: iterator flatten


    【解决方案1】:

    在这种情况下,展平意味着移除嵌套。例如,一个整数数组(每个元素都是一个数组的数组)是嵌套的;如果我们将其展平,我们会得到一个整数数组,其中包含相同顺序的相同值,但在单个数组中彼此相邻,而不是分成几个数组:[[1 2] [3 4]] -> [1 2 3 4]。与迭代器、其他集合和更深的嵌套(字符串迭代器集合的数组)的区别相同。

    至于成语,实际上并不多——这不是一项常见的任务,而且通常很简单。请注意,对于常规数组(所有嵌套数组的大小相同),nested[i][j] 等价于nested[i * INNER_ARRAY_SIZE + j]。这有时用于避免嵌套,特别是在将数组视为引用类型的语言中,因此如果嵌套它们,则需要许多单独分配的数组。在 Python 中,您可以使用 itertools.chain(*iterable_of_iterables) 展平可迭代对象。

    【讨论】:

    • -1 扁平化迭代的标准python习惯是使用itertools.chain
    【解决方案2】:

    扁平化意味着移除序列类型的嵌套。 Python 为此提供了itertools.chain(*iterables) (http://docs.python.org/library/itertools.html#itertools.chain)。

    【讨论】:

      猜你喜欢
      • 2016-11-09
      • 2013-10-21
      • 2013-07-11
      • 2018-05-12
      • 2017-10-22
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-07-08
      相关资源
      最近更新 更多