我试图“压扁”一个数组,将其转换为1个单维项目集。我使用append命令,我得到了这个:
[['X', 'X'],['ff','ff','ff','ff','ff']]
但我希望将元素排序为:
['X','X','ff','ff','ff','ff','ff']
我不能使用string.join()或string.split()运算符。那么哪个是最明智的方式来执行此操作?
答案 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.chain
或extend()
>>> 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']
应该是最快的。