Возможно, вы могли бы использовать itertools.combinations()
для создания уникальных наборов пар с максимальным диапазоном.
Что-то вроде:
from itertools import combinations
list3 = ([7,5,6], [6,9,7], [7,8,4], [2,4,6,7,9])
list4 = []
for sublist in list3:
for (i, j) in combinations(range(len(sublist)), 2):
list4.append([sublist[i], sublist[j]])
Чтобы сделать это болееэффективнее, я бы порекомендовал использовать понимание списка:
list4 = [[sublist[i], sublist[j]] for sublist in list3 for (i, j) in combinations(range(len(sublist)), 2)]
Больше о понимании списка по сравнению с добавлением к списку с использованием циклов for
: Почему понимание списка намного быстрее, чем добавление в список?
Как отметил @chepner в своем комментарии ниже, combinations
принимает любую итерацию, так что вы можете просто использовать это как входные данные для combinations
.Нам также не нужно добавлять отдельные элементы.Мы можем сгенерировать нужные нам комбинации, которые будут генерировать список, и мы можем просто объединить все вместе:
list4 = [t for sublist in list3 for t in combinations(sublist, 2)]