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