Как сравнить подсписок списка с подсписком другого списка, которые находятся в том же списке списков - PullRequest
0 голосов
/ 09 мая 2020

У меня есть список списков, каждый из которых имеет подсписки , например, что-то вроде следующего:

mylist = [[['AB','CD'],['GH','EF'],['IJ','KL'],['']],[['CD','AB'],['EF','GH'],['KL','IJ'],['']],[['EF','GH'],['CD','AB'],['IJ','KL'],['']],...]

количество списков - 1500, и каждый список из них имеет 16 подсписок (это всего лишь пример). Я хочу сравнить подсписок одного списка с подсписком другого списка для всех списков. Чтобы быть более точным, я хочу сравнить ['AB', 'CD'] с ['CD', 'AB'] и ['EF', 'GH'] и первый подсписок остальных списки . То же самое для второго подсписка. Я хочу проверить, есть ли у них одинаковые товары, порядок не имеет значения. Таким образом, ['AB', 'CD'] с ['CD', 'AB'] будут такими же. Но тогда мне также нужно найти, какие подсписки содержат ['EF', 'GH'], и выполнить некоторые вычисления, когда все те же подсписки вместе. В общем, я хочу проверить 1-й подсписок одного списка с остальными первыми подсписками каждого списка, а затем сделать то же самое для каждого подсписка (2-й, 3-й, 4-й, .., 15-й). Я думал сделать что-то вроде этого

for i in range(0,len(mylist)):
        for j in range(i,len(mylist)):
            if mylist[i][j]==mylist[i + 1][j]:

, но, похоже, это не работает, когда я так делаю. Это дает мне:

IndexError: индекс списка вне допустимого диапазона

Я не знаю, верен ли мой подход. Я пытался найти и понять, но не нашел ничего подходящего.

все подсписки имеют одинаковую длину.

1 Ответ

0 голосов
/ 09 мая 2020

Вы пытаетесь получить индекс вне диапазона списка, когда i находится на последней позиции списка. Вам не нужно go до последней позиции, достаточно go до предпоследней позиции и сравнить ее с последней, например:

for i in range(0,len(mylist)-1):
    for j in range(i,len(mylist[i])):
        if mylist[i][j]==mylist[i+1][j]:
            print('Found')

...