Как ввести множество в питоне input
Перейти к содержимому

Как ввести множество в питоне input

  • автор:

Как ввести множество в питоне input

Множество в языке Питон — это структура данных, эквивалентная множествам в математике. Множество может состоять из различных элементов, порядок элементов в множестве неопределен. В множество можно добавлять и удалять элементы, можно перебирать элементы множества, можно выполнять операции над множествами (объединение, пересечение, разность). Можно проверять принадлежность элемента множеству.

В отличие от массивов, где элементы хранятся в виде последовательного списка, в множествах порядок хранения элементов неопределен (более того, элементы множества хранятся не подряд, как в списке, а при помощи хитрых алгоритмов). Это позволяет выполнять операции типа “проверить принадлежность элемента множеству” быстрее, чем просто перебирая все элементы множества.

Элементами множества может быть любой неизменяемый тип данных: числа, строки, кортежи. Изменяемые типы данных не могут быть элементами множества, в частности, нельзя сделать элементом множества список (но можно сделать кортеж) или другое множество. Требование неизменяемости элементов множества накладывается особенностями представления множества в памяти компьютера.

Задание множеств

Множество задается перечислением всех его элементов в фигурных скобках. Исключением явлеется пустое множество, которое можно создать при помощи функции set() . Если функции set передать в качестве параметра список, строку или кортеж, то она вернёт множество, составленное из элементов списка, строки, кортежа. Например:

A = A = set('qwerty') print(A)

Каждый элемент может входить в множество только один раз, порядок задания элементов неважен. Например, программа:

A = B = print(A == B)

выведет True , так как A и B — равные множества.

Каждый элемент может входить в множество только один раз. set(‘Hello’) вернет множество из четырех элементов: .

Работа с элементами множеств

Узнать число элементов в множестве можно при помощи функции len .

Перебрать все элементы множества (в неопределенном порядке!) можно при помощи цикла for :

primes = for num in primes: print(num)

Проверить, принадлежит ли элемент множеству можно при помощи операции in , возвращающей значение типа bool . Аналогично есть противоположная операция not in . Для добавления элемента в множество есть метод add :

A = print(1 in A, 4 not in A) A.add(4)

Для удаления элемента x из множества есть два метода: discard и remove . Их поведение различается только в случае, когда удаляемый элемент отсутствует в множестве. В этом случае метод discard не делает ничего, а метод remove генерирует исключение KeyError .

Наконец, метод pop удаляет из множества один случайный элемент и возвращает его значение. Если же множество пусто, то генерируется исключение KeyError .

Из множества можно сделать список при помощи функции list .

Операции с множествами

С множествами в питоне можно выполнять обычные для математики операции над множествами.

Школа №1 Остров

Множества в Python – это структура данных, которые содержат неупорядоченные элементы. Элементы также не является индексированным. Как и список, множество позволяет внесение и удаление элементов. Однако, есть ряд особенных характеристик, которые определяют и отделяют множество от других структур данных:

  • Множество не содержит дубликаты элементов;
  • Элементы множества являются неизменными (их нельзя менять), однако само по себе множество является изменяемым, и его можно менять;
  • Так как элементы не индексируются, множества не поддерживают никаких операций среза и индексирования.
Оглавление
  • Основное
  • Создание множеств
  • Добавление и удаление элементов во множество
  • Операции над множествами
  • Методы множеств
  • Операции

Вы используете гостевой доступ (Вход)

Эта страница: General type: incourse. Context Книга: Множества в Python (context id 384966). Page type mod-book-view.

Как ввести несколько строк в python

А нельзя ввести несколько строк используя Enter + дополнительные клавиши, типа: Ctrl, Shift, Alt .

17 октября 2022

Функция input() ждёт, пока пользователь нажмёт на клавишу Enter, и затем возвращает введенную строку. Значит, нельзя 1 командой input() ввести более одной строки, но можно повторять это, например, в таком цикле:

result = [] while True: # False - пустая строка seq = input('Введите строку: ') if seq: result.append(seq) else: break # run. # 1 # Hello # True # print(result) # => ['1', 'Hello', 'True'] 

Ввод окончится при двойном переносе строки. В результате получим массив введенных строк.

Как сделать ввод множества пользователем из консоли?

Даны два списка, упорядоченных по возрастанию (каждый список состоит из различных элементов).

Найдите пересечение множеств элементов этих списков, то есть те числа, которые являются элементами обоих списков. Алгоритм должен иметь сложность O(len(A)+len(B)).

Решение оформите в виде функции Intersection(A, B). Функция должна возвращать список пересечения данных списков в порядке возрастания элементов. Модифицировать исходные списки запрещается.

Я решил ее как-то так:

def intersection(a, b): c = a.update(b) for i in c: return i # return c.difference_update(d) numList1 = list(set(int, input().split())) numList2 = list(set(int, input().split())) print(intersection(numList1, numList2))

При запуске программы ввожу первое множество, жму энтер и выдает ошибку:

Traceback (most recent call last):
File «C:/Users/Николай/PycharmProjects/week6/Intersection of many.py», line 8, in
numList1 = list(set(int, input().split()))
TypeError: set expected at most 1 arguments, got 2

Как мне от этого уйти? Честно говоря не понимаю как решить задачку. Буду признателен за подсказки.

  • Вопрос задан более трёх лет назад
  • 2684 просмотра

Комментировать
Решения вопроса 2

adugin

Andrey Dugin @adugin Куратор тега Python

Что за int в set()? Читайте, что написано в трейсе. И в чём смысл из списка, который возвращается функцией .split(), делать set, и снова list? Ну и вообще, Вы на каком языке пишете? С синтаксисом всё совсем плохо. Update списка, присвоение апдейта, return в цикле. Изучите матчасть всё-таки, не надо играть в угадайку.

UPD Вот решение, соответствующее всем условиям задачи:

def intersect(a1, a2): common = [] i1, i2 = iter(a1), iter(a2) try: e1, e2 = next(i1), next(i2) while True: if e1 < e2: e1 = next(i1) elif e1 >e2: e2 = next(i2) else: common.append(e1) e1, e2 = next(i1), next(i2) except StopIteration: return common intersect([1,2,3,4,5,10,12], [3,4,5,6,7,11,12]) # => [3, 4, 5, 12]

Ответ написан более трёх лет назад
Комментировать
Нравится 1 Комментировать
n293 @n293 Автор вопроса

Большое спасибо за помощь: Андрей Дугин и longclaps

def intersection(a, b): c = a & b return sorted(c, key=int) numList1 = set(input().split()) numList2 = set(input().split()) print(*intersection(numList1, numList2))

Ответ написан более трёх лет назад
Нравится 1 3 комментария

adugin

Andrey Dugin @adugin Куратор тега Python
Только у этого алгоритма сложность сильно меньше O(len(A)+len(B))
n293 @n293 Автор вопроса

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

Это решение подходит под заданную сложность?

def intersection(a, b): result = list(set(a) & set(b)) return result numList1 = list(map(int, input().split())) numList2 = list(map(int, input().split())) print(*intersection(numList1, numList2))

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *