示例
v_list = [["1.mp4", "2.mp4"], ["3.mp4"], ["6.mp4", "7.mp4"], [], []]
我想把这个列表里面的各个列表,重新排列组合
但是我不知道列表里套了几个列表,套的列表里有几个元素,这样就无法具体固定for循环
后来使用强大的 exec() 函数,间接解决了该问题
不考虑排序的问题,一共有2*1*2=4种排列方式
下面是Python代码
s = "" hui_che = " " v_list = [["1.mp4", "2.mp4"], ["3.mp4"], ["6.mp4", "7.mp4"], [], []] video_list = [] for i in v_list: # 去掉某些列表里面没有元素的列表 if len(i) == 0: continue video_list.append(i) count = 0 each_video = "" for i in range(len(video_list)): each_list = video_list[i] tab = " " s += """for v_%s in %s:""" % (i, each_list) + hui_che + '\n' + hui_che each_video += "v_%s," % i hui_che = hui_che + tab complex_list = [] each_video = str(each_video).strip(",") s += """complex_list.append([%s])""" % each_video # exec函数是实现这个方法的关键,目的是执行字符串或文件中的Python语句 print(s) """ 打印示例结果 for v_0 in ['1.mp4', '2.mp4']: for v_1 in ['3.mp4']: for v_2 in ['6.mp4', '7.mp4']: complex_list.append([v_0,v_1,v_2]) """ exec(str(s)) print(complex_list) """ 打印示例结果 [['1.mp4', '3.mp4', '6.mp4'], ['1.mp4', '3.mp4', '7.mp4'], ['2.mp4', '3.mp4', '6.mp4'], ['2.mp4', '3.mp4', '7.mp4']] """
当然,也可以用递归的方式来实现未知列表之间的排列组合
这里有一个作者提供了类似的示例作为参考,请移步:用python实现排列组合——组合 - 知乎 (zhihu.com)
标签:che,Python,list,列表,mp4,video,each,排列组合 From: https://www.cnblogs.com/SlookUp/p/16976609.html