#python #python-3.x #pandas
#python #python-3.x #pandas
Вопрос:
list1 = ['1_Maths','2_Chemistry','10.1_Geography','12_History']
list2 = ['1_Maths', '2_Physics', '3_Chemistry','11.1_Geography','13_History']
Я хочу создать два вывода из list1 и list2 на основе последних 4 символов.
lists = [item for itm in list1 if itm in list2]
Выше только печатается 1_Maths
. Не могу придумать способ создания всех совпадающих объектов.
last_4char = [sub[ : -4] for sub in list1]
Это может быть идеей, но я не уверен, как я могу реализовать это, чтобы получить точные результаты из list1 / 2
Вывод
print(new_list1) = ['1_Maths','2_Chemistry','10.1_Geography','12_History']
print(new_list2) = ['1_Maths', '3_Chemistry','11.1_Geography','13_History']
Комментарии:
1.
[itm for itm in list1 if itm[-4:] in [item2[-4:] for item2 in list2]]
. Обратите внимание, что это решение предполагает, что все элементы в списках имеют не менее 4 символов
Ответ №1:
Попробуйте это:
def common_4_last(list1, list2):
return [[i for i in list1 if i[-4:] in {k[-4:] for k in list2}], [i for i in list2 if i[-4:] in {k[-4:] for k in list1}]
В результате получится список из 2 элементов, один список для элементов формы list1 и второй список для элементов из list2, которые соответствуют критериям common last 4
Вы можете запустить функцию для любой пары списков
Например, для ваших данных list1 и list2 результат будет:
common_4_last(list1, list2)
[['1_Maths', '2_Chemistry', '10.1_Geography', '12_History'], ['1_Maths', '3_Chemistry', '11.1_Geography', '13_History']]
Если вам нужен первый список, вы можете получить его с помощью
common_4_last(list1, list2)[0]
и то же самое для второго списка
Комментарии:
1. Любой лучший способ сделать это, если у вас есть три списка. Все списки имеют одинаковые имена, но номера разные.