首页 > 编程语言 >Python各个列表交叉进行排列组合

Python各个列表交叉进行排列组合

时间:2022-12-12 17:24:44浏览次数:68  
标签:che Python list 列表 mp4 video each 排列组合

示例

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

相关文章