如何按指定规则映射三个Python列表生成目标元组对?
解决思路与代码示例
你的问题出在错误地将所有文件夹合并后和路径做全笛卡尔积,导致每个路径都与所有文件夹组合,而实际需要的是路径列表和文件夹列表一一配对后分别生成组合:paths[0]只和folder_one的元素组合,paths[1]只和folder_two的元素组合。
方法一:使用itertools.product(灵活适配更多配对场景)
import itertools paths = ["c:/path/path", "d:/path/path"] folder_one = ["fol1", "fol2"] folder_two = ["folder1", "folder2"] # 将路径与对应的文件夹列表一一绑定 for path, folders in zip(paths, [folder_one, folder_two]): # 对当前路径和对应文件夹生成组合 for pair in itertools.product([path], folders): print(pair)
方法二:直接嵌套循环(简单直观,适合固定长度的列表)
如果你的路径和文件夹组数量固定,可以直接分两组循环:
paths = ["c:/path/path", "d:/path/path"] folder_one = ["fol1", "fol2"] folder_two = ["folder1", "folder2"] # 处理第一个路径与folder_one的组合 for fol in folder_one: print((paths[0], fol)) # 处理第二个路径与folder_two的组合 for fol in folder_two: print((paths[1], fol))
两种方法都会输出符合要求的结果:
('c:/path/path', 'fol1') ('c:/path/path', 'fol2') ('d:/path/path', 'folder1') ('d:/path/path', 'folder2')
内容的提问来源于stack exchange,提问作者suziex
相关产品推荐
相关产品推荐

