2016-07-29 2 views
0

Я в настоящее время есть список списков какExplode список списков в отдельные списки питона

L = [['E2', 'C1', 'A1', 'B1', 'C2'], ['C1', 'D1', 'A1'], ['C1', 'C2']] 

Моей целью является сравнение L [я] против L [я + 1], чтобы сделать группы. Например, L [2] является подмножеством L [0], поэтому я бы устранил его. Мои два разных списка будут L [0] и L [1].

Для этого, если я могу каким-то образом взорвать список списка в другой список, это будет легко достижимо, итерации cmp(L[i], L[i+1]). По разному списку я имею в виду, я буду хранить каждый элемент как отдельную переменную. => L_1 = L [0], L_2 = L [1] и L_3 = L [2].

zip только кажется, делает вид карты между двумя списками. Может ли кто-нибудь предложить функцию?

+1

Если вы каким-то образом хранятся подсписки как отдельные переменные, вы бы эффективно сделать это невозможно сделать то, что вы хотите (итерация над ними) – maillard

+0

Возможный дубликат [Итерация через пары элементов в списке Python] (http://stackoverflow.com/questions/5764782/iterate-through-pairs-of-items-in-a-python-list) –

+0

Списки ** ** уже выделены. Доступ к ним через локальную переменную вместо индекса не имеет никакого отношения к тому, что вы пытаетесь сделать, за исключением, возможно, сделать это сложнее, как предлагает предыдущий комментарий. –

ответ

0

Вы можете отобразить список, чтобы создать список наборов. если затем перебрать этот список, можно было бы проверить, если они являются подмножествами друг друга

LSets = map(set, L) 

filteredL = filter(lambda s: not any(s.issubset(s2) for s2 in LSets if s != s2), LSets) 
+0

Благодарю. Это создает только набор всех элементов в listoflists. Но я намерен взять или сохранить только L [0] и L [1], а не L [3], поскольку он уже присутствует в L [0]. – Arun

+0

@Arun - это то, во что идет фильтр во второй строке кода. Он отфильтровывает все наборы, которые являются подмножеством любого другого набора. – maillard

+0

Спасибо. Я с тобой согласен. но если вы посмотрите на список, все элементы L [2] присутствуют в L [0], но не все элементы L [1] присутствуют в L [0]. Следовательно, мой конечный результат будет L [0] и L [1]. Но здесь фильтр создает только L [0]!. – Arun