Вывести индексы элементов в одном списке в соответствии со значениями другого списка в отдельных строках - PullRequest
0 голосов
/ 03 мая 2020
A = [['a'], ['a'], ['b'], ['a'], ['b']]
B =  [['a'], ['b']]

У меня есть два списка A и B. Я должен распечатать эти элементы индексный номер (номер индекса + 1) списка A, какие элементы также существуют в списке B. Для каждого элемента списка B я хочу Печатайте индексы значений в списке A последовательно в одну строку. Как я могу это исправить?

Мой код:

for i,x in enumerate(A):
    for y in B:
        if x == y:
            print(A.index(x)+1,end=" ")

Вывод моего кода:

1 1 3 1 3 

Ожидаемый результат:

1 2 4
3 5

Ответы [ 2 ]

2 голосов
/ 03 мая 2020

Код будет go таким, чтобы получить 1,2,4 на выходе

for i,x in enumerate(A):
    if x==B[0]:
        print(i+1,end=" ")
1 голос
/ 04 мая 2020

Одним из решений является использование словарей:

A = [['a'], ['a'], ['b'], ['a'], ['b']]
B =  [['a'], ['b']]
dict_B = dict([(b[0],[]) for b in B])
for i,a in enumerate(A):
    if a[0] in dict_B:
        dict_B[a[0]].append(i+1)

for key in dict_B:
    print(' '.join(map(str, dict_B[key])))

Вывод:

1 2 4 
3 5 

Другим решением является использование numpy:

import numpy as np
np_array = np.array(A)
for elem in B:
    item_index = np.where(np_array==elem)
    print(' '.join(map(str, item_index[0]+1)))

Вывод:

1 2 4 
3 5 
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...