You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Python如何移除列表内元组的括号并合并为一维列表

问题

给定包含多个元组的列表:

L = [(1, 2, 3), (3, 2, 1), (2, 1, 6), (7, 3, 2), (1, 0, 2)]

需求是移除元组的括号,将所有数字合并为一个一维列表,期望输出为:

L = [1, 2, 3, 3, 2, 1, 2, 1, 6, 7, 3, 2, 1, 0, 2]

尝试以下代码后,虽移除了括号但生成带单引号的字符串元素:

L2 = []
for x in L:
    mm = (', '.join(str(j) for j in x))
    L2.append(mm)
print(L2)

得到结果:

L = ['1, 2, 3', '3, 2, 1', '2, 1, 6', '7, 3, 2', '1, 0, 2']

寻求正确实现方法。

解决方法

你的代码问题在于用join把每个元组转换成了字符串,所以最终列表里是字符串元素,而非数字类型元素。以下是几种正确的实现方式:

方法1:嵌套循环

最直观的方式,遍历每个元组,再遍历元组内的每个数字,逐个添加到新列表:

L = [(1, 2, 3), (3, 2, 1), (2, 1, 6), (7, 3, 2), (1, 0, 2)]
L2 = []
for tpl in L:
    for num in tpl:
        L2.append(num)
print(L2)

方法2:列表推导式

用Python列表推导式简化代码,逻辑和嵌套循环完全一致:

L = [(1, 2, 3), (3, 2, 1), (2, 1, 6), (7, 3, 2), (1, 0, 2)]
L2 = [num for tpl in L for num in tpl]
print(L2)

方法3:使用itertools.chain

如果处理的列表规模较大,itertools.chain的效率更高——它会直接迭代所有元素,不会创建中间列表:

import itertools

L = [(1, 2, 3), (3, 2, 1), (2, 1, 6), (7, 3, 2), (1, 0, 2)]
L2 = list(itertools.chain(*L))
# 也可以用chain.from_iterable,无需解包原列表
# L2 = list(itertools.chain.from_iterable(L))
print(L2)

以上三种方法的输出结果均符合预期:

[1, 2, 3, 3, 2, 1, 2, 1, 6, 7, 3, 2, 1, 0, 2]

内容的提问来源于stack exchange,提问作者Mohsen Ali

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.16 03:31:00