如何实现同维度嵌套字符串列表与整数列表的按位重复拼接?
解决嵌套列表按对应次数重复元素的问题
你可以用嵌套列表推导式结合zip()来实现需求,核心是把每个字符串按对应次数生成重复的独立元素,再拼接成目标子列表。
完整代码示例
list1 = [['ABC','DEF'],['GHI','JKL'],['MNO','PQR']] list2 = [[2, 2], [3, 3], [4, 4]] # 生成目标结果 result = [ [s for s, cnt in zip(sub_list1, sub_list2) for _ in range(cnt)] for sub_list1, sub_list2 in zip(list1, list2) ] print(result) # 输出: [['ABC', 'ABC', 'DEF', 'DEF'], ['GHI', 'GHI', 'GHI', 'JKL', 'JKL', 'JKL'], ['MNO', 'MNO', 'MNO', 'MNO', 'PQR', 'PQR', 'PQR', 'PQR']]
代码逻辑拆解
- 外层
zip(list1, list2):把两个列表的对应子列表配对,比如第一组是['ABC','DEF']和[2,2] - 内层
zip(sub_list1, sub_list2):把每个子列表里的字符串和对应重复次数配对,比如('ABC',2)、('DEF',2) [s for _ in range(cnt)]:对每个字符串,生成cnt次独立重复的元素(比如'ABC'生成['ABC','ABC'])- 内层推导式会把同一子列表的所有重复元素拼接成一个新子列表,最终组合成完整的结果列表
你之前尝试的问题点
如果直接用*运算符(比如s * cnt),得到的是拼接后的长字符串(比如'ABCABC'),而不是多个独立的元素。所以需要用循环生成独立元素,再拼接成列表。
内容的提问来源于stack exchange,提问作者T S
相关产品推荐
相关产品推荐

