Сравнение и идентичность двух списков в Python
Если нужен список уникальных элементов в объединении двух списков:
result = list(set(lst1 + lst2)) # ['red', 'white', 'green', 'blue']
Симметричная разность двух списков:
result = list(set(lst1) ^ set(lst2)) # ['green', 'blue']
Обычная разность(множество из lst1 не входящее в lst2 ):
result = list(set(lst1) - set(lst2)) # ['green','blue']
Вариант, сохраняющий порядок с меньшим количеством конверсий типов:
result = [x for x in lst1 if x in set(lst2))]
Как сравнить поиндексно значения двух списков?
Имеем два списка:
lit1 = [23, 56, 78, 69] lit2 = [11, 89, 33, 45]
Задача состоит в том, чтобы сравнить эти списки поиндексно, при сравнении меньший элемент вынести в отдельный список result .
Смотрим решение с комментариями к коду:
list1 = [23, 56, 78, 69] list2 = [11, 89, 33, 45] # список для результата result = [] # перебираем элементы списка # в пределах длины первого списка for i in range(len(lst1)): # сравниваем элементы первого списка # с элементами второго списка if lst1[i] lst2[i]: # добавляем в итоговый список `result` # элемент из первого, если он меньше result.append(list1[i]) else: # иначе - добавляем элемент из второго списка result.append(list2[i]) # выводим итоговый список print(result)
Код выше можно записать короче, при помощи выражения-генератора списка или функции map()
result = [min(p) for p in zip(list1, list2)] # или result = list(map(min, zip(l1, l2)))
Вычисление идентичности двух списков в Python.
Задача состоит в том, чтобы проверить, содержат ли два списка точно одинаковые элементы. Это довольно полезная распространенная задача.
Так как оператор == сравнивает списки поиндексно слева направо, то решение состоит в том, чтобы перед сравнением эти списки отсортировать, ведь заранее неизвестно, упорядочены они или нет.
Метод списка list.sort() сортирует его на месте (т.е. не создает новый). Если необходимо сохранить начальную сортировку списков, то для сортировки используйте функцию sorted() , она создаст новый отсортированный список, который можно сравнивать.
lst1 = [5, 3, 1, 2, 4] lst2 = [1, 2, 4, 3, 5] if lst1.sort() == lst2.sort(): print('Списки идентичны') else: print('Списки не идентичны')
- КРАТКИЙ ОБЗОР МАТЕРИАЛА.
- Список Python как аргумент по умолчанию
- Использование списка в качестве стека
- Использование списка в качестве очереди
- Генератор списка list
- Эффективное использование генераторов списков
- Операция присваивания на месте и списки
- Поведение списков Python в разных областях видимости
- Сравнение и идентичность двух списков
- Как получить несколько последних элементов списка
Циклы, совпадение в списке
Привет всем!
Собственно есть код, который работает, если указать индекс [0], то работает [0:2] не выводит, если ввести window.
Мне нужно пробежаться фором по всему списку, если слово введенное через input найдено, то вывести текст
1 2 3 4 5 6
words = ['cat', 'window', 'defenestrate'] kek = input("ee: ") list_answer = kek for list_answer in words: if list_answer == words[0:2]: print("naydeno")
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
Ответы с готовыми решениями:
Циклы в односвязном списке
В общем есть задание: Есть односвязный список, проверить есть ли в нем цикл и определить его длину.
Сравнить каждый элемент с каждым, если есть совпадение, то соединить всю строку, в которой найдено совпадение
Доброго времени суток! Есть два массива строк разного размера (элементы массива разделены.
Сколько раз встречается элемент в списке. Использовать циклы
Построить список, определяющий сколько раз встречается каждый элемент в ске: (A B A C B C A B D).
Циклы: выяснить, перечислены ли ученики в списке в порядке убывания их роста
Нужно написать программу по следующему заданию: Имеется список учащихся класса с указанием роста.
709 / 348 / 120
Регистрация: 09.12.2020
Сообщений: 919
print('naydeno' if input('ee: ') in ['cat', 'window', 'defenestrate'] else 'ne naydeno')
Регистрация: 26.01.2020
Сообщений: 25
точно, здесь же без цикла можно
1 2 3 4 5
words = ['cat', 'window', 'defenestrate'] kek = input("ee: ") list_answer = kek if list_answer in words: print("naydeno")
709 / 348 / 120
Регистрация: 09.12.2020
Сообщений: 919
SergeyQA,
Сообщение от SergeyQA 
list_answer = kek
у вас kek — не список, а строка
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
Помогаю со студенческими работами здесь
Циклы с условием, циклы с переменной, вложенные циклы
С условием 1. Ввести натуральное число N и вычислить сумму всех чисел фибоначчи меньших N.

Наименьшее число в списке, наибольшее число в списке, количество чисел в списке
Составить программу, которая получает на вход последовательность целых чисел, и печатает на экране.
Задача для школы: Научиться использовать циклы с предусловием while и циклы с постусловием do / while
Научиться использовать циклы с предусловием while и циклы с постусловием do / while языка C # для.

Циклы. Напечатать числа в виде таблицы, используя только циклы
Напечатать числа в виде таблицы, используя только циклы (массивы и строки не применять): .

Циклы. Напечатать числа в виде таблицы, используя только циклы
4. Напечатать числа в виде таблицы, используя только циклы (массивы и строки не применять): .
Тема: простые циклы (LOOP, FOR, WHILE), метки, вложенные циклы
оговорюсь сразу, я — новичок, пытаюсь самостоятельно освоить PL/SQL. по заданию требуется.
python: поиск частичного совпадение в списке и вывод следующего элемента
Не очень понял что вы хотите получить, но примерно так:
# поменял вид скобок, с теми скобками это set и ничего вообще нельзя сделать, значения лежат вперемешку reader = ['sdfsd - sdfdsf', '43252345', 'ecrf - wexex', '34534535', '233253', 'wwdwed - wedd'] ch_1 = 'sdfsd - fxcf' n = 2 # какой элемент по счёту мы хотим получить после совпадения for i in range(len(reader) - n): if reader[i].partition('-')[0] == ch_1.partition('-')[0]: print(reader[i + n])
ecrf - wexex
Как найти совпадение в списке python?
Есть список:
a=[[1,2,3],[2,4,3],[5,2,1],[1,2,7]]
Нужно выделить все подсписки, которые подходят под [1,2,*] без перебора списка. Как это сделать силами стандартного python?
- Вопрос задан более трёх лет назад
- 18672 просмотра
1 комментарий
Оценить 1 комментарий

Andrey Dugin @adugin Куратор тега Python
Причём здесь regexp?
Решения вопроса 0
Ответы на вопрос 3
Как это можно сделать без перебора? Ведь в каком-то виде, пусть и неявном, перебор всё равно будет иметь место. Вот такой, например:
lst = [[1,2,3],[2,4,3],[5,2,1],[1,2,7]] prefix = [1, 2] def search(lst, prefix): l = len(prefix) for item in lst: if item[:l] == prefix: yield item print list(search(lst, prefix)))
length = len(prefix) results = [item for item in lst if item[:length] == prefix]
Ответ написан более трёх лет назад
Комментировать
Нравится Комментировать
throughtheether @throughtheether
human after all
Нужно выделить все подсписки, которые подходят под [1,2,*] без перебора списка.
Если вы хотите выбрать все элементы первого уровня вложенности («подсписки»), удовлетворяющие условию, без рассмотрения каждого из них (без перебора), то никак. В случае, если список a большой, вы можете рассматривать каждый элемент при добавлении его в список a и, в случае выполнения условия, добавлять его (или его индекс) в другой список/множество, хранящий/хранящее совпадения. Общая «сложность» будет такой же, но она, при соответствующей организации кода, будет «размазана» во времени, что иногда может быть предпочтительно. Но в таком случае паттерн должен быть известен заранее.
Ответ написан более трёх лет назад
Комментировать
Нравится Комментировать
velociraptor @velociraptor
lst = [[1,2,3],[2,4,3],[5,2,1],[1,2,7]] prefix = [1, 2] newlst = filter(lambda s: s[0] == prefix[0] and s[1] == prefix[1], lst)
Ответ написан более трёх лет назад
Комментировать
Нравится Комментировать
Ваш ответ на вопрос
Войдите, чтобы написать ответ

- Python
Палиндромы leetcode, в VS все правильно, на сайте другой ответ, что делать?
- 1 подписчик
- 3 часа назад
- 58 просмотров
