如何用Python实现嵌套列表的所有条件排列转换
实现方法
核心是使用Python标准库itertools.product计算多个列表的笛卡尔积,再将每个组合的元素拼接为字符串即可,完整代码如下:
import itertools A = [['a', 'ae', 'oa'], ['a'], ['l'], ['y', 'i']] B = [''.join(item) for item in itertools.product(*A)]
运行后输出的B和示例完全一致:
['aaly', 'aali', 'aealy', 'aeali', 'oaaly', 'oaali']
代码说明
itertools.product(*A):对A中所有子列表求笛卡尔积,返回所有元素组合的可迭代对象,每一个组合是对应位置元素组成的元组,比如第一个组合为('a', 'a', 'l', 'y')''.join(item):将组合元组中的所有字符串元素拼接为一个完整的字符串- 列表推导式遍历所有组合并拼接,最终得到目标列表B
如果不想依赖标准库,也可以用递归方式手动实现笛卡尔积计算,逻辑和上述方法一致,只是需要自己写循环生成所有组合。
内容的提问来源于stack exchange,提问作者Alirezadigi
相关产品推荐
相关产品推荐

