如何遍历两个含嵌套子列表的列表并实现对应元素拼接?
嵌套列表对应元素组合解决方案
直接用嵌套列表推导式就能解决你的问题,核心是两层zip分别处理外层列表和内层子列表的配对:
lst1 = [ [1 ,2 ,3], [3 ,4 ,5, 5], [7, 8], [9, 10, 2, 3, 7] ] lst2 = [ ['a', 'b', 'c'], ['d', 'e', 'f', 'g'], ['h', 'a'], ['z', 'w', 'x', 'y', 'k'] ] # 嵌套列表推导式实现 lst3 = [[str(num) + char for num, char in zip(sublist1, sublist2)] for sublist1, sublist2 in zip(lst1, lst2)] print(lst3)
输出结果和你期望的一致:
[['1a', '2b', '3c'], ['3d', '4e', '5f', '5g'], ['7h', '8a'], ['9z', '10w', '2x', '3y', '7k']]
分步解释
- 外层
zip(lst1, lst2):把两个大列表中的对应子列表配对,比如lst1[0]和lst2[0]、lst1[1]和lst2[1]依次组合。 - 内层
zip(sublist1, sublist2):对每一对子列表,把里面的元素一一对应,比如1和'a'、2和'b'配对。 str(num) + char:因为数字不能直接和字符串拼接,所以先把数字转成字符串再和字符合并,得到你需要的组合结果。
更易读的循环写法
如果觉得列表推导式太紧凑,也可以用嵌套循环实现,逻辑完全一致:
lst3 = [] # 遍历外层配对的子列表 for sub1, sub2 in zip(lst1, lst2): current_sublist = [] # 遍历子列表里的元素对 for num, char in zip(sub1, sub2): current_sublist.append(str(num) + char) lst3.append(current_sublist)
注意事项
要保证lst1和lst2中对应位置的子列表长度相同,否则zip会以较短的子列表为准截断配对结果。
内容的提问来源于stack exchange,提问作者Redouane TEBBOUNE
相关产品推荐
相关产品推荐

