Python 中嵌套列表中的列表组合
Combinations by list in nested lists in Python
我有一个列表 [['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'), ...]
您可以使用 itertools.chain
或 itertools.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')]
我有一个列表 [['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'), ...]
您可以使用 itertools.chain
或 itertools.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')]