python-3.x 将元组转换为列表中的列表

7hiiyaii  于 2023-05-02  发布在  Python
关注(0)|答案(4)|浏览(141)

现在,我有一个元组列表和下面的子列表:

my_list = [([1, 5], 10), ([2, 8], 12), ([4, 9], 11), ([8, 2], 10)]

但是,我想要下面的输出:

my_list = [[1, 5, 10], [2, 8, 12], [4, 9, 11], [8, 2, 10]]

我该如何转换它?请帮帮我谢谢大家!

tyu7yeag

tyu7yeag1#

使用列表解析可以得到如下所示的预期结果

>>> my_list = [([1, 5], 10), ([2, 8], 12), ([4, 9], 11), ([8, 2], 10)]
>>> 
>>> result = [ [*a, b] for a, b in my_list]
>>> result
[[1, 5, 10], [2, 8, 12], [4, 9, 11], [8, 2, 10]]
>>>
fhity93d

fhity93d2#

有一个预定义的方法将一个列表转换为一个元组,反之亦然,但是你的列表包含嵌入的列表,所以这个方法可以工作,你迭代列表,并使用扩展操作符向它附加一个新的列表 *

l=[([1, 5], 10), ([2, 8], 12), ([4, 9], 11), ([8, 2], 10)]
newList=[]
for i in l:
    newList.append([*i[0],i[1]])
print(newList)
yrefmtwq

yrefmtwq3#

你也可以使用这个方法:

new_list = list(map(lambda i : [*i[0],i[1]], my_list))
suzh9iv8

suzh9iv84#

就像@sahasrara62建议的那样,你可以简单地使用列表解析

result = [[*a, b] for a, b in my_list]

我发现有时候比较实用的是像那样将嵌套列表Map到不同的项

result = [[a,b,c] for (a, b), c in my_list]

使用这种模式,您可以自由地混合元素的顺序,甚至只使用第一种方法不可能使用的项目的子集。看

# mix the order
result = [[b, c, a] for (a, b), c in my_list]
# or omit b for instance
result = [c, a] for (a, b), c in my_list

相关问题