压平迭代器意味着什么?

时间:2012-08-23 14:32:57

标签: iterator flatten

我想知道扁平化是什么意思压平迭代器的迭代器。你能告诉我吗?是否有任何C / Java / Python习语?

2 个答案:

答案 0 :(得分:4)

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

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

答案 1 :(得分:1)

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