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

求助:如何在Python中合并三个等长字符串列表的对应元素

按位置合并等长字符串列表

你有三个元素数量相同的字符串列表,希望按对应位置合并成一个新列表,示例列表如下:

list_1 = ['inline', '', '', '', '', '', '']
list_2 = ['static', 'static', 'static', '', 'static', 'static', 'static']
list_3 = ['boolean', 'uint8', 'uint8', 'void', 'boolean', 'void', 'void']

期望输出:

print(result[0], result[1])
# Output
inline static boolean, static uint8

你尝试用嵌套列表推导式合并,但得到的是所有元素的笛卡尔积,结果不符合预期:

# Joining two lists
list_type_12 = [i + j for i in list_type_1 for j in list_type_2]
print(list_type_12)
list_type_123 = [i + j for i in list_type_12 for j in list_type_3]
print(list_type_123)

解决方案

你之前的嵌套推导式会遍历所有元素的组合(笛卡尔积),而非按索引对应位置合并。正确做法是用zip()函数把三个列表中同一位置的元素配对,再对每组元素做处理:

  1. 用zip(list_1, list_2, list_3)获取每个位置的三元组
  2. 过滤掉每组中的空字符串,避免多余空格
  3. 用空格将非空元素连接成一个字符串

完整代码:

list_1 = ['inline', '', '', '', '', '', '']
list_2 = ['static', 'static', 'static', '', 'static', 'static', 'static']
list_3 = ['boolean', 'uint8', 'uint8', 'void', 'boolean', 'void', 'void']

# 按位置合并并过滤空字符串
result = [' '.join([s for s in group if s]) for group in zip(list_1, list_2, list_3)]

# 验证输出
print(result[0], result[1])
# 输出:inline static boolean, static uint8

运行后result的完整内容为:

['inline static boolean', 'static uint8', 'static uint8', 'void', 'static boolean', 'static void', 'static void']

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.10 19:25:28