Итерация по двум спискам A и B - PullRequest
0 голосов
/ 21 октября 2019

Я пытаюсь перебрать два списка A и B. Где B равно A - A [i], где i = 1:

Для Eg listA = ['A', 'B', 'C', 'D']. Для первого элемента 'A' в списке A я хочу, чтобы список B имел ['B', 'C', 'D']. Для второго элемента 'B' в списке A я хочу, чтобы список B имел ['A ',' C ',' D ']

То, что я пробовал до сих пор.

listA = ['A', 'B', 'C', 'D']
for term in listA:       
    listA.remove(term)
    for item in listA:
        print(listA)

Ответы [ 4 ]

2 голосов
/ 21 октября 2019

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

 for i in range(len(listA)):
    print(listA[:i]+listA[i+1:])

Или,

for i in listA:
    print(list(set(listA) - set(i)))
2 голосов
/ 21 октября 2019

Попробуйте это,

>>> la = ['A', 'B', 'C', 'D']
>>> for i in la:
    _temp = la.copy()
    _temp.remove(i)
    print(_temp)

Вывод:

['B', 'C', 'D']
['A', 'C', 'D']
['A', 'B', 'D']
['A', 'B', 'C']

* Если вы хотите назначить вывод на печать новым переменным, используйте словарь, в котором ключом будет имя списка, а значение выводится на печать.

1 голос
/ 21 октября 2019

Это то, что вы хотите?

listA = ['A', 'B', 'C', 'D']

Bs = \
[listA[:idx] + listA[idx + 1:] 
    for idx 
    in range(len(listA))]

for B in Bs:
 print(B)
0 голосов
/ 21 октября 2019

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

keys_map = {x: [item for item in listA if item != x] for x in listA}

print(keys_map)

Вывод

{
 'A': ['B', 'C', 'D'],
 'B': ['A', 'C', 'D'],
 'C': ['A', 'B', 'D'],
 'D': ['A', 'B', 'C']
}

и получите доступ к нужной клавише вот так

keys_map.get('A')

# returns

['B', 'C', 'D']
...