Python中嵌套列表中的列表组合

Posted

技术标签:

【中文标题】Python中嵌套列表中的列表组合【英文标题】:Combinations by list in nested lists in Python 【发布时间】:2021-11-15 00:47:10 【问题描述】:

我有一个 [['a','b','c','d'], ['a','c','d'], ['b','d ','e','f','g','h'], ... ,['c','d','a','b']] 我必须结合每个元素嵌套列表(单独)在 2 元组中以形成单个 2 元组列表。我试图用下面的代码来做,但它只结合了第一个列表的元素:

def totwotuples(my_list):
    for i in range(len(my_list)):
        for j in range(len(my_list[i])):
           twotuples = itertools.combinations(my_list[i], 2)
    return[k for k in twotuples]

如何遍历所有嵌套列表?为了得到这个预期的输出(例如,对于前两个嵌套列表): [('a','b'), ('a','c'), ('a','d'), ('b ','c'), ('b','d'), ('c','d'), ('a','c'), ('a','d'), ('c ','d'), ...]

【问题讨论】:

你能举一个预期输出的例子吗? 2-tuples 不是有效的 Python 标识符。 您能澄清一下您的问题吗?另一方面,函数名称“to_2-tuples”和变量“2-tuples”不应该在 Python 或大多数其他编程语言中工作! 【参考方案1】:

您可以使用itertools.chainitertools.chain.from_iterable 组合子列表的结果。

import itertools

lst = [['a','b','c','d'], ['a','c','d']]

output = itertools.chain.from_iterable(itertools.combinations(sublst, r=2) for sublst in lst)
output = list(output) # convert to a list
print(output) # [('a', 'b'), ('a', 'c'), ('a', 'd'), ('b', 'c'), ('b', 'd'), ('c', 'd'), ('a', 'c'), ('a', 'd'), ('c', 'd')]

【讨论】:

以上是关于Python中嵌套列表中的列表组合的主要内容,如果未能解决你的问题,请参考以下文章

求大神支招,python循环打印两个嵌套列表组合

Python中将列表元素嵌套到数据框

如何将列表中的元素组合到新的嵌套列表中?

python字典和列表区别都有哪些

在python中迭代未知数量的嵌套循环

在python中展平嵌套字符串列表