Как переставить список в python на основе другого списка - PullRequest
0 голосов
/ 31 марта 2020

Я хочу перестроить Список (или создать новый Список) на основании некоторого условия:

У меня есть Список:

fixedList = ['116','117','114','99','102','101','95']

unorderedList = ['99','116','117']

Я хочу создать новый список вроде:

newList = ['116','117','99'].

элемент newList основан на unorderedList , а порядок основан на fixedList

Ответы [ 5 ]

1 голос
/ 31 марта 2020

Вы можете использовать numpy .isin

import numpy as np

fixedList = ['116','117','114','99','102','101','95']
unorderedList = ['99','116','117']

# isin returns a boolean array of the same shape as element 
# that is True where an element of unorderedList is in fixedList and False otherwise.

mask = np.isin(np.array(fixedList), np.array(unorderedList))

#Now form new list using mask
newlist = (np.array(fixedList)[mask]).tolist()

Теперь новый список содержит следующее содержание

['116', '117', '99']

См. https://docs.scipy.org/doc/numpy/reference/generated/numpy.isin.html

1 голос
/ 31 марта 2020

Используйте пользовательскую сортировку, где ключом для сортировки является индекс в фиксированном списке, например:

fixedList = ['116','117','114','99','102','101','95']
unorderedList = ['99','116','117']
newList = sorted(unorderedList, key=fixedList.index)

Вывод:

['116', '117', '99']
1 голос
/ 31 марта 2020

Как то так.

sorted(unorderedList, key=fixedList.index)
1 голос
/ 31 марта 2020

Вы можете использовать понимание списка:

[el for el in fixedList if el in unorderedList]

Вывод соответствует ожидаемому

['116', '117', '99']
0 голосов
/ 31 марта 2020
def intersection(lst1, lst2): 
    lst3 = [value for value in lst1 if value in lst2] 
    return lst3

fixedList = ['116','117','114','99','102','101','95']
unorderedList = ['99','116','117']

print( intersection(fixedList,unorderedList)) 

https://www.geeksforgeeks.org/python-intersection-two-lists/

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