在Python中使2D数组成为一维

时间:2014-03-21 16:25:28

标签: python arrays 2d flatten

我试图“压扁”一个数组,将其转换为1个单维项目集。我使用append命令,我得到了这个:

[['X', 'X'],['ff','ff','ff','ff','ff']]

但我希望将元素排序为:

['X','X','ff','ff','ff','ff','ff']

我不能使用string.join()或string.split()运算符。那么哪个是最明智的方式来执行此操作?

4 个答案:

答案 0 :(得分:4)

我认为你要找的是extend()而不是append()

>>> oldList = [['X', 'X'],['ff','ff','ff','ff','ff']]
>>> print oldList
[['X', 'X'], ['ff', 'ff', 'ff', 'ff', 'ff']]
>>> newList = []
>>> for item in oldList:
...     newList.extend( item )
>>> print newList
>>> ['X', 'X', 'ff', 'ff', 'ff', 'ff', 'ff']

答案 1 :(得分:3)

使用列表理解:

alist = [['X', 'X'],['ff','ff','ff','ff','ff']]
print [j for i in alist for j in i ]

使用reduce:

reduce(lambda r,x:r+x, alist,[])

输出:

['X', 'X', 'ff', 'ff', 'ff', 'ff', 'ff']

答案 2 :(得分:2)

使用itertools.chainextend()

>>> from itertools import chain
>>> oldList = [['X', 'X'],['ff','ff','ff','ff','ff']]
>>> list(chain.from_iterable(oldList))
['X', 'X', 'ff', 'ff', 'ff', 'ff', 'ff']

>>> list1 = ['X', 'X']
>>> list1.extend(['ff','ff','ff','ff','ff'])
>>> list1
['X', 'X', 'ff', 'ff', 'ff', 'ff', 'ff']

答案 3 :(得分:1)

为了完整起见,总有

In [1]: x = [['X', 'X'], ['ff', 'ff', 'ff', 'ff', 'ff']]
In [2]: sum(x, [])
Out[2]: ['X', 'X', 'ff', 'ff', 'ff', 'ff', 'ff']

但是

In [3]: [item for sublist in x for item in sublist]
Out[3]: ['X', 'X', 'ff', 'ff', 'ff', 'ff', 'ff']

应该更快,

In [4]: from itertools import chain
In [5]: list(chain.from_iterable(x))
Out[5]: ['X', 'X', 'ff', 'ff', 'ff', 'ff', 'ff']

应该是最快的。