#python #list #loops #indexing #linked-list
Вопрос:
Мои данные представляют собой большой (связанный) список, состоящий из меньших списков (7500 ). И в этих меньших списках существует другой список со строками в качестве их значения. Список A <— Список B
List_A = [['123', 'Hello World', '2020', ['john', 'mike', 'edgar'], 'N'],
['124', 'Hello Universe', '2021', ['harold', 'jessica', 'ashley'], 'Y'],
['125', 'Hello Milkyway', '2020', ['maria', 'tessa', 'rodrigo'], 'N']]
List_A.nodeat(0).value[3]
>>>> ['john', 'mike', 'edgar']
Outside this large list, I've created a string split list of names:
List_Outside = ['mike', 'maria'].
Я хочу создать новый список (List_A_2) только из списка B, у которого есть хотя бы одно совпадающее имя из List_Outside в списке C.
Таким образом, List_A_2 будет выглядеть так:
List_A_2 = [['123', 'Hello World', '2020', ['john', 'mike', 'edgar'], 'N'],
['125', 'Hello Milkyway', '2020', ['maria', 'tessa', 'rodrigo'], 'N']]
Конечно, я хотел бы, чтобы это было применимо для списков 7500 , поэтому мне нужно было бы использовать индексы в цикле for. Заранее спасибо.
Ответ №1:
Вы можете использовать any()
для фильтрации списка:
List_A_2 = [l for l in List_A if any(w in List_Outside for w in l[3])]
print(List_A_2)
С принтами:
[['123', 'Hello World', '2020', ['john', 'mike', 'edgar'], 'N'],
['125', 'Hello Milkyway', '2020', ['maria', 'tessa', 'rodrigo'], 'N']]