说,我有两个二维列表,如下所示:
[[('a', '1'), ('a', '12'), ('a', '3')], [('b', '21'), ('b', '31')], [ ('c', '11')]]
我要实现的输出是:
Output_list=[['1','12','3'], ['21','31'], ['11']]
这里的主要复杂性是我想通过一个实现输出list comprehension
。
我的尝试之一是:
print [a for innerList in fin_list1 for a,b in innerList]
输出:
['1', '12', '3', '21', '31', '11']
但是,正如您所看到的,尽管我已经成功地检索了每个元组的第二个元素,但我未能保留我的内部列表结构。
首先,让我们分配数据:
>>> data = [
[('a', '1'), ('a', '12'), ('a', '3')],
[('b', '21'), ('b', '31')],
[('c', '11')],
]
您可以itemgetter
用来创建一个从元组中获取一个元素的函数:
>>> from operator import itemgetter
>>> first = itemgetter(0)
>>> second = itemgetter(1)
现在,您可以使用来转换内部列表map
:
>>> [map(first, row) for row in data]
[['a', 'a', 'a'], ['b', 'b'], ['c']]
>>> [map(second, row) for row in data]
[['1', '12', '3'], ['21', '31'], ['11']]
您还可以创建first
并second
没有使用itemgetter
:
def first(xs):
return xs[0]
def second(xs):
return xs[1]
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句