Студопедия

КАТЕГОРИИ:

АстрономияБиологияГеографияДругие языкиДругоеИнформатикаИсторияКультураЛитератураЛогикаМатематикаМедицинаМеханикаОбразованиеОхрана трудаПедагогикаПолитикаПравоПсихологияРиторикаСоциологияСпортСтроительствоТехнологияФизикаФилософияФинансыХимияЧерчениеЭкологияЭкономикаЭлектроника


Пересечение списков




Если даны два списка и необходимо найти их совпадающие элементы (область пересечения списков), т.е. значения элементов, которые присутствуют в обоих списках, то это легко можно сделать с помощью цикла for языка программирования Python.

Код ниже подходит для списков, содержащих неповторяющиеся значения в самих себе. Иначе в результирующем списке могут появиться одинаковые элементы.

a = [5,[1,2],2,'r',4,'ee']

b = [4,1,'we','ee',2,'r',[1,2]]

c = []

for i in a:

for j in b:

if i == j:

c.append(i)

Break

 

print (c)

Алгоритм поиска очень прост. Берется первый элемент первого списка (внешний цикл for) и последовательно сравнивается с каждым элементом второго списка (вложенный цикл for). В случае совпадения (равенства) значений элемент добавляется в третий список c, который был создан до этого. Команда break служит для выхода из внутреннего цикла, т.к. в случае совпадения дальнейший поиск при данном значении i бессмысленный.

Использование операций над множествами

Другой, возможно более интересный, способ – это использование множеств.

Множества не могут содержать одинаковых элементов. Результатом операции пересечения двух множеств является множество, содержащее значения элементов, которые были и в первом и во втором операндах-множествах. Например, если первое множество было {1, 4, 9, 12}, а второе – {4, 6, 9, 14, 18}, то результатом операции пересечения будет {4, 9}.

Поскольку даны списки, то их можно преобразовать во множества с помощью функции set.

a = [5,[1,2],2,'r',4,'ee']

b = [4,1,'we','ee',2,'r',[1,2]]

a = set(a)

b = set(b)

При этом если в списках встречались одинаковые значения, то во множествах они будут уже представлены единственным вариантом. Поэтому в данном случае списки могут содержать одинаковые значения.

Если проверить тип данных, на которые ссылаются переменные a и b до использования функции set, то они, очевидно, будут типом list. После преобразования – уже типом set. Это можно проверить с помощью функции type.

После того, как списки были преобразованы во множества, над ними можно выполнить операцию пересечения, а результат связать с переменной.

c = a & b

С помощью знака & выполняется пересечение множеств. Кроме того, над множествами можно выполнять ряд других операций: | (объединение), - (разность), ^ (исключающее ИЛИ).

Переменная c будет содержать только уникальные значения элементов, однако будет множеством. Требуется же получить список. Для этого можно использовать функцию list, выполняющую создание списка.

c = list(c)

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

c = list(set(a) & set(b))

Решето Эратосфена - алгоритм определения простых чисел


Поделиться:

Дата добавления: 2015-05-08; просмотров: 70; Мы поможем в написании вашей работы!; Нарушение авторских прав





lektsii.com - Лекции.Ком - 2014-2024 год. (0.006 сек.) Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав
Главная страница Случайная страница Контакты