我想知道展平例如展平迭代器的迭代器意味着什么。你能告诉我吗?是否有任何 C/Java/Python 习语?
问问题
2596 次
2 回答
4
在这种情况下,展平意味着去除嵌套。例如,一个整数数组(每个元素都是一个数组的数组)是嵌套的;如果我们将它展平,我们会得到一个整数数组,其中包含相同顺序的相同值,但在单个数组中彼此相邻,而不是分成几个数组[[1 2] [3 4]] -> [1 2 3 4]
:与迭代器、其他集合和更深的嵌套(字符串迭代器集合的数组)的区别相同。
至于习语,实际上并不多——这不是一项常见的任务,而且通常很简单。请注意,对于常规数组(所有嵌套数组的大小相同),nested[i][j]
等价于nested[i * INNER_ARRAY_SIZE + j]
. 这有时用于避免嵌套,特别是在将数组视为引用类型的语言中,因此如果嵌套它们,则需要许多单独分配的数组。在 Python 中,您可以使用itertools.chain(*iterable_of_iterables)
.
于 2012-08-23T14:38:30.660 回答
1
扁平化意味着移除序列类型的嵌套。Python 提供itertools.chain(*iterables)
了这个目的(http://docs.python.org/library/itertools.html#itertools.chain)。
于 2012-08-26T16:02:52.087 回答