我有以下列表:
[['a', [0, 1]], ['b', [2, 3]], ['c', [4, 5]]]
我想将其更改为:
[['a', 0, 1], ['b', 2, 3], ['c', 4, 5]]`
如何使用列表推导在Python 3中完成?
答案 0 :(得分:8)
从Python 3.5+开始,您可以在列表声明中使用解包。在列表理解中使用它:
lst = [['a', [0, 1]], ['b', [2, 3]], ['c', [4, 5]]]
new_lst = [[x, *more] for x, more in lst]
print(new_lst) # [['a', 0, 1], ['b', 2, 3], ['c', 4, 5]]
答案 1 :(得分:4)
使用列表理解和不带解包运算符*
,这是我易于理解且易于理解的解决方案:
myList = [['a', [0, 1]], ['b', [2, 3]], ['c', [4, 5]]]
newList = [[x, y, z] for x,[y,z] in myList]
print(newList)
# [['a', 0, 1], ['b', 2, 3], ['c', 4, 5]]
很简单,不是吗?
现在,使用解包运算符*
,它甚至更短,但如果您必须了解此运算符(与@OlivierMelançon相同的答案),则可以理解这一点:
myList = [['a', [0, 1]], ['b', [2, 3]], ['c', [4, 5]]]
newList = [[x, *y] for x,y in myList]
print(newList)
# [['a', 0, 1], ['b', 2, 3], ['c', 4, 5]]
答案 2 :(得分:2)
你可以试试这个:
l_new = [[ll[0]] + ll[1] for ll in l]
输出:
>> [['a', 0, 1], ['b', 2, 3], ['c', 4, 5]]
答案 3 :(得分:1)
这是一个lambda函数,可以展开列表列表。然后,您可以在列表推导中使用它来遍历列表列表列表的最外层。
flatten = lambda l: [item for sublist in l for item in sublist]
# the example list
lst = [['a', [0, 1]], ['b', [2, 3]], ['c', [4, 5]]]
final = [flatten(l) for l in lst]
输出:
>>> final
[['a', 0, 1], ['b', 2, 3], ['c', 4, 5]]
答案 4 :(得分:1)
我的2美分:
old_list = [['a', [0, 1]], ['b', [2, 3]], ['c', [4, 5]]]
new_list = list(map(lambda x: [x[0]] + x[1], old_list))
new_list
正是您要找的。 p>