学习来源:https://blog.csdn.net/wuuud1/article/details/83991951
涉及的函数库讲解:https://www.runoob.com/python/python-func-reduce.html
涉及使用的库:python3:from functools import reduce
# 常见写法
def lists_combination(lists, code=''):
'''输入多个列表组成的列表, 输出其中每个列表所有元素可能的所有排列组合
code用于分隔每个元素'''
try:
import reduce
except:
from functools import reduce
def myfunc(list1, list2):
return [str(i)+code+str(j) for i in list1 for j in list2]
return reduce(myfunc, lists)
# 高手的写法
fn = lambda x, code=',': reduce(lambda x, y: [str(i)+code+str(j) for i in x for j in y], x)
# 调用时直接写:fn(lists, code)
案例:
from functools import reduce
a = [['A', 'B'], ['C', 'D', 'E'],['F','G','H']]
# 常见写法
def lists_combination(lists, code=''):
'''输入多个列表组成的列表, 输出其中每个列表所有元素可能的所有排列组合
code用于分隔每个元素'''
def myfunc(list1, list2):
return [str(i) + code + str(j) for i in list1 for j in list2]
return reduce(myfunc, lists)
print('常见写法的结果:\n', lists_combination(a, '+')) # 排列结果用+号连接
# 高手写法
fn = lambda x, code='|': reduce(lambda x, y: [str(i)+code+str(j) for i in x for j in y], x)
# 直接调用fn(lists, code)
res = fn(a, '+')
print('高手写法的结果:\n', res)