Python各个列表交叉进行排列组合
【摘要】 例v_list = [["1.mp4", "2.mp4"], ["3.mp4"], ["6.mp4", "7.mp4"], [], []]我想把这个列表里面的各个列表,重新排列组合但是我不知道列表里套了几个列表,套的列表里有几个元素,这样就无法具体固定for循环后来使用 exec() 函数,间接解决了该问题不考虑顺序的问题,一共有212=4种排列方式下面是Python代码s = ""hui_...
例
v_list = [["1.mp4", "2.mp4"], ["3.mp4"], ["6.mp4", "7.mp4"], [], []]
我想把这个列表里面的各个列表,重新排列组合
但是我不知道列表里套了几个列表,套的列表里有几个元素,这样就无法具体固定for循环
后来使用 exec() 函数,间接解决了该问题
不考虑顺序的问题,一共有212=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
语句
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函数是实现这个方法的关键,目的是执行字符串或文件中的Python
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)
也可以使用 itertools.product() 对两个列表进行排列组合
import itertools
list1 = ['a', 'b', 'c']
list2 = [1, 2, 3]
#学习中遇到问题没人解答?小编创建了一个Python学习交流群:711312441
# 获取 list1 和 list2 的排列组合
combinations = itertools.product(list1, list2)
# 打印每个组合
for combination in combinations:
print(combination)
如果要对未知个列表进行排列组合,则只需将它们传递给 itertools.product() 函数即可
【版权声明】本文为华为云社区用户原创内容,转载时必须标注文章的来源(华为云社区)、文章链接、文章作者等基本信息, 否则作者和本社区有权追究责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱:
cloudbbs@huaweicloud.com
- 点赞
- 收藏
- 关注作者
评论(0)