将两个列表生成所有组合并插入_v_分隔符的最快捷方法
嵌入
_v_分隔符的优雅实现方案 你已经实现笛卡尔积(全外连接)逻辑的前提下,不同技术栈的拼接写法都非常简洁,核心是直接对每一对匹配元素做字符串插入即可,以下是常见场景的实现:
Python
使用f-string拼接是可读性最高的写法,配合itertools.product可以一行生成完整结果:
from itertools import product fname_list = ["Mike", "Dave", "Sarah"] sname_list = ["Smith", "Thomas", "Hamilton"] # 直接在推导式中插入分隔符 result = [f"{first}_v_{second}" for first, second in product(fname_list, sname_list)]
JavaScript
用flatMap+模板字符串可以避免嵌套循环返回二维数组的问题,代码非常简洁:
const fname = ["Mike", "Dave", "Sarah"]; const sname = ["Smith", "Thomas", "Hamilton"]; const result = fname.flatMap(first => sname.map(second => `${first}_v_${second}`));
Shell 文本处理
如果是处理纯文本文件的场景,用awk实现效率很高,不需要嵌套循环读文件:
# 假设f.txt存所有名、s.txt存所有姓,每行一个元素,已去掉表头 awk 'NR==FNR{name[NR]=$0;next} {for(i=1;i<=length(name);i++) print name[i]"_v_"$0}' f.txt s.txt
SQL 数据库场景
如果两张表存储对应列表,用CONCAT函数直接拼接即可:
SELECT CONCAT(fname_col, '_v_', sname_col) AS combined_name FROM fname_table CROSS JOIN sname_table;
内容的提问来源于stack exchange,提问作者C. Cooney
相关产品推荐
相关产品推荐

