Сравнение двух списков в Python (почти то же самое)

У меня есть два списка со значениями в примере:

List 1 = TK123,TK221,TK132 

А ТАКЖЕ

 List 2 = TK123A,TK1124B,TK221L,TK132P 

Я хочу сделать еще один массив со всеми значениями, которые соответствуют List 1 и List 2, а затем выводят те, которые не совпадают.

Для моих целей считается, что «TK123» и «TK123A» соответствуют. Итак, из приведенных выше списков я бы получил только TK1124B .

Я не особенно забочусь о скорости, поскольку планирую запустить эту программу один раз и сделать с ней.

    3 Solutions collect form web for “Сравнение двух списков в Python (почти то же самое)”

    Это сравнивает каждый элемент в списке с каждым элементом в другом списке. Это не сработает, если у обоих есть буквы (например, TK132C и TK132P не совпадают). Если это проблема, прокомментируйте это ниже.

     list_1 = ['TK123','TK221','TK132'] list_2 = ['TK123A','TK1124B','TK221L','TK132P'] ans = [] for itm1 in list_1: for itm2 in list_2: if itm1 in itm2: break if itm2 in itm1: break else: ans.append(itm1) for itm2 in list_2: for itm1 in list_1: if itm1 in itm2: break if itm2 in itm1: break else: ans.append(itm2) print ans >>> ['TK1124B'] 
     >>> list1 = 'TK123','TK221','TK132' >>> list2 = 'TK123A','TK1124B','TK221L','TK132P' >>> def remove_trailing_letter(s): ... return s[:-1] if s[-1].isalpha() else s ... >>> diff = set(map(remove_trailing_letter, list2)).difference(list1) >>> diff set(['TK1124']) 

    И вы можете добавить последнее письмо обратно,

     >>> add_last_letter_back = {remove_trailing_letter(ele):ele for ele in list2} >>> diff = [add_last_letter_back[ele] for ele in diff] >>> diff ['TK1124B'] 

    Для:

     list_1 = ['TK123', 'TK221', 'TK132'] list_2 = ['TK123A', 'TK1124B', 'TK221L', 'TK132P'] 

    Любой из двух следующих фрагментов даст список общих элементов между двумя списками:

     list(set(list_1).intersection(list_2)) # returns [] list(set(list_1) & set(list_2)) # returns [] 

    Чтобы получить список эксклюзивных предметов:

     list(set(list_1) ^ set(list_2)) # returns ['TK1124B', 'TK132P', 'TK123A', 'TK221', 'TK221L', 'TK132', 'TK123'] 

    Если вы хотите отсортировать полученный список, используйте sorted метод:

     exclusive = list(set(list_1) ^ set(list_2)) sorted(exclusive) # returns ['TK1124B', 'TK123', 'TK123A', 'TK132', 'TK132P', 'TK221', 'TK221L'] 
      Python - лучший язык программирования в мире.