Python для начинающих. Урок 12: Множества (Set).
Вставка
- Опубліковано 17 кві 2020
- ВСЕ ВИДЕО ПО PYTHON: • Python для начинающих
МОЙ КУРС ПО GIT: www.udemy.com/course/git-alis...
ДЛЯ ЖИТЕЛЕЙ РФ: swiftbook.org/courses/586
Реклама и сотрудничество: alishev.neil@gmail.com
*Комментарии к уроку:*
В моем решении ко второй задаче я допустил ошибку: там не нужен if в начале функции. У нас могут быть случаи, когда список длиннее множества и при этом наша функция должна вернуть True.
Например: my_func({2, 3, 4}, [2, 2, 4, 4]) -> Должно вернуть True, но в моем решении вернет False.
Таким образом, мое решение не учитывает случаев, когда в списке есть дубликаты.
Спасибо.
Сразу об этом подумал, сделал свой велосипед:
def my_func(my_set, my_list):
for el in my_list:
if el in my_set:
continue
else:
return False
return True
Здравствуйте, Наиль.
Я прошёл ваш курс по Java, мне понравилось, но хочется узнать, где и как можно обрести практику, я ещё совсем новичок, подскажите где взять практический опыт, а то забывается материал, да и становится от этого бессмысленным).
На самом деле нужен, только при сравнении длин списка и множества, список форматировать под множество, тогда применение if будет правильным
Можно дабавить переменную например:
b=set()
Def function(x,y):
b=set(y)
if len(b)>len(x):
return False
for ......
Думаю так правельно .
Привет! Видно , что стараешься ,все очень доходчиво и понятно, на данный момент, для новичка, это лучший гайд по Python. Не забрасывай канал, надеюсь будет продолжение уроков! У тебя талант
Спасибо за уроки! Сейчас на каникулах с радостью смотрю=)
Сперва прописал код с такой уверенностью, как-будто в экселе формулу и ожидал ошибки, но функция сработала😃👍 Не так сперва, как я хотел-просто отображал результат true/false по всем элементам, но немного покумекав, я увидел свою единственную ошибку-много пробелов и я вновь решил ещё одну задачу сам))) Это фантастика! Конечно же для уверенного пользователя это изи, но я ужасно рад! Я люблю учиться и это лучшие уроки! Спасибо Вам
Задача №2
Сделал немного бестолково, но всё же
def func(input_set, input_lst):
for el in input_lst:
if el in input_set:
return True
else:
return False
print(func({1, 2, 10, 4, 5, 'hello'}, [5]))
Спасибо за уроки!
Nail, perfect lessons! Well done.
У тебя лучшие видеоуроки! Ждём следующие! Спасибо большое! Лайк!
Спасибо за вашу работу! Очень жду новых уроков.
Отличные уроки!!!👍👍👍 Лучший учитель!!!
Лучшие уроки,спасибо!Ждем следующие с нетерпением!
Спасибо за 12 урок .Отличный ,как и предыдущие .ожидаю с нетерпением следующих
Спасибо, хорошая подача информации!!
Уже как-то легче пошло. Спасибо автору за качественные уроки!
Лучший! Жду новых уроков
Спасибо большое за урок!
Нравится качество записи видео и звука. Очень хорошо.
Вот решение второй задачки, оно немного странное, но всё работает.
def ecual(somelist,someset):
s=0
temp=set(somelist)
for el in someset:
if el in temp:
s+=1
if s==len(someset):
print('всё есть')
else:
print('чего-то не хватает')
Надеюсь, что в будущем интервал между выпуском уроков уменьшиться. Но я, конечно не принуждаю. Думаю, ты бы выпускал видео почаще, если б было нечего делать.
Понравилось решение одного комментатора с континум в первом условии, но не знал про эту функцию и зделал так:
def f (myset, mylist):
total =0
for e in mylist:
if e in myset:
total += 1
return bool(total == len(mylist))
Почему если длина списка больше длины множества, то сразу фолс?. Вообще-то в списке элементы могут повторяться. Множество может быть из 3 элементов. А список из 4, но попарно повторяющихся (2,2,4,4).. считаю это ошибкой
Согласен!
Правильное замечание.
тоже заметил. Даже если методом issuperset() прогонять - возвращает True при повторяющихся элементах
#Задача_2
def my_func(input_set, input_list):
return(set(input_list)
Спасибо, Наиль! Очень хорошо доносишь информацию. Жду новых уроков.
Отличный урок
Вроде бы я сделал так и это покороче но наверное с длинными списками будет не очень быстро работать
кстати в последних уроках очень хорошо объясняешь было бы неплохо если бы снял ещё один курс по python уже не для начинающих)
Задача 2
def return_s_l (set1,list1 ):
for i in list1:
if i in set1:
return "true"
else:
return "false"
print(return_s_l(set1, list1))
Спасибо большое ещё раз. Хорошо объесняеш. А когда выйдет следующие уроки???
Ждём еще видео с заданиями))
Мое решение задачи №2....уж люблю я все усложнить в несколько раз)) но это работает )
def func(input_set, input_list):
input_set_len = len(input_set)
input_set_2 = set(input_list)
for i in input_list:
input_set_2.add(i)
input_set_2_len = len(input_set_2)
if (input_set_len != input_set_2_len):
return False
else:
return True
Спасибо, Наиль, очень понятно и класно, что есть задачки ! А когда будет продолжение ? Буду очень ждать !
Вы - лучший !
Задача №1 (сам дошел до этого)
my_list = [1, 1, 2, 5, 10, 10, 10]
my_set = set(my_list)
b = sum(my_set)
print(b)
переменная b тут ни к чему. Сразу можно print(sum(my_set))
@@user-yo9bu5tz1e Можно сразу print(sum(set(suma)))
Я решил сделать вот так:
print("Введите размер массива который вы хотите")
t = int(input())
suma = []
print('Вводите на каждой строчке элементы массива')
while len(suma) < t:
suma.append(int(input()))
print('Сумма уникальных элементов')
print(sum(set(suma)))
p.s Просто нечем заняться))))
27:54
def my_func(input_set, input_list):
return len(input_set) == len(input_set.union(set(input_list)))
Добрый день! Хотелось бы на данном канале увидеть уроки по PyQt5 :)
def funk(mylist,myset):
for a in mylist:
for b in myset:
if b==a:
return(True)
else:
return(False)
def my_func(input_set, input_list):
if len(input_list) > len(input_set) or len(input_list) < len(input_set):
return False
for el in input_list:
if el not in input_set:
return False
return True
def function1(a, b):
for i in a:
for f in b:
if f == i:
print(str(i) + " - цифра существует")
else:
print(str(i) + " - цифра ne существует")
s = [1, 2, 3]
l = {1, 2, 3}
print(function1(s, l))
задача 2 моя версия решения , теперь буду смотреть как надо
def my_func(a, b):
c=len(a)
for i in b:
a.add(i)
return(len(a)==c)
a = {1, 3 ,5 ,9}
b = [1, 3 ,5 ,9]
print(my_func(a,b))
УРАААААААА ! Вышло продолжение !!! Если ты или вы, как лучше ? Короче, если читали(уважение) мои комментарии на прошлых видео про Питон, то знаете, что я Вадим, учусь в 7 классе и учу Питон(Python). Вы очень понятно и хорошо все разжевываете !!! Даже не думал, что увижу видос одним из первых. Спасибо, что не забросили ! Ваши уроки - ТОП !!! Можете почитать мои комменты на прошлых видео. У меня были некоторые вопросы... Огромезнейшое спасибо ! Я уже поставил лайк, сейчас посмотрю ! Это чень хорошо, что у вас находиться время почитать и ответить своим подписчикам. Только - что подписался, кстате. Жду продолжение ! Не понимаю, как у Хауди лямы просмотров, а на вашем канале так мало.... И не думал, что напишу коммент и поставлю лайк первым ! Лично от меня лайк на все видосы ! Буду рад, если ответите ! Удачи !!!
Оч. хорошо, что на ютубе еще остались РЕАЛЬНО нужные и понятные видео. А то в тренды ютуба попадает всякий мусор ...
Наиль, большое спасибо ** спасибо !
Пожалуйста, доведите уроки до конца. Я и все мы ценим ваши старания !
def f1(set1,list1):
for a in list1:
if a not in set1:
return False
return True
Мой вариант решения второй задачи, ну а что, работает же)
s= ({10, 20, 30, 40, 50})
l = ([10, 30, 50])
def my_func(s, l):
a = 0
b = 0
for i in l:
if i in s:
a = a + 1
else:
b = b + 1
if b
Скажите пожалуйста, после того,как прошла я этот мини-курс,на что ориентироваться,что изучать?
зачем проверка на длинну списка в начале решения второй задачи? там ведь может быть куча дубликатов например...
и почему не используется else объясните пожалуйста
Лучший
А сколько уроков планируется в общем?
Го ещё видел очень понятно все
когда переводила set обратно в список вышла ошибка
'tuple' object is not callable
попробовала почитать в интернете почему так, но ничего не поняла(
comment just for rate)
#1st exercise
mylist=[1,1,2,5,10,10,10]
sum=0
myset=set(mylist)
for i in myset:
sum+=i
print("summ of unique numbers is: "+str(sum))
#2nd exercise
def my_func(input_set, input_list):
temp=0
for i in input_list:
if i not in input_set:
temp=1
break
return (temp==0)
my_func ({1,2,3},[1,1,2,2,1,2,4])
А что про кортежи? И интересно было бы послушать ваше объяснение про рекурсии)
Кортеж - лист, который не может изменяться.
А что если вот так?
def sravnilka(set1,list1):
c = [element for element in list1 if element not in set1]
if c:
return False
else:
return True
print(sravnilka(set1,list1))
то есть кладем в С все, что не совпадает в списке и множестве, и если С не пустой, пусть дает False
Наиль, спасибо за уроки, но как-то всё это долго))
Нет желания сделать полный курс и выложить его платно, на тот же udemy? Я бы купил
Я бы тоже купил
Большое спасибо за Ваши уроки.
Не совсем согласен с первым условием решения второй задачи. Если в списке содержатся элементы, которые повторяются несколько раз и этот список будет длиннее множества, то программа автоматически выдаст False, даже при условии, что все элементы списка есть также и в множестве: my_func({1, 2, 3}, [1, 2, 2, 3]) ----> False.
Моё, довольно странное, решение второй задачи:
def proverka(mnoj, spis):
a = 0
mnoj2 = set(spis)
for el in mnoj2:
if el in mnoj:
a += 1
if a == len(mnoj2):
print(True)
else:
print(False)
def func(input_set, input_list):
run = True
otv = True
while run:
for i in input_list:
if i not in input_set:
otv = False
run = False
if otv:
print("True")
else:
print("False")
Спасибо за уроки Наиль. Повторяю за вами, вроде получается. Но ничего не понимаю, что происходит. Это нормально? Или надо почитать теории
Не знаю, актуально ли писать спутся девять месяцев, но предлагаю делать как я: Когда наиль говорит что собирается сделать (это очень хороший способ обучения). Я ставлю на паузу и пытаюсь сначала сам это сделать, а потом уже смотрю что получилось на видео. Так ты лучше вникнешь в тему самостоятельно
answer = None
def my_fun(my_set, my_list):
for i in my_list:
if i in my_set:
answer = True
else:
answer = False
break
return answer
print(my_fun({2, 7, 10}, [2, 10, 7, 7]))
Вторую задачу решил, основываясь на уникальности элементов в множестве, и получилось короче:
def funct(set_, list_):
i = len(set_)
for g in list_:
set_.add(g)
print(len(set_) == i)
Будут ли видео про c#?
Задача 2:
(Решил без цикла for)
newList = list(input_set)
If newList == input_list:
return True
else:
return False
Почему я добавил элементы (input_set) в новый список (newList)
Потому что даже если элементы листа и множества одинаковые,они все равно не равны.
Твое решение весьма креативно, но:
Во первых, твое решение не учитывает, что в множестве может быть больше значений, чем в списке и поэтому [1, 2, 3, 4, 0] {0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10} у тебя выдаст False, хотя здесь должно быть True
Во вторых, если в списке будут строки(они в задаче не исключались), то твой алгоритм посыпется полностью))))
1. sum не сработает если в сэте есть хотя бы 1 стринговое значение, только что проверил
2. сравнение размера input_list с input_set безсмысленно, т.к. в list значения могут дублироваться, а соответственно он может быть существенней больше сэта, но при этом содержать все те же элементы, при таком раскладе мы получим фолс даже если элементы у них одинаковые.
26:00 а если в списке дубликаты?
Например в списке [1, 1, 3, 1, 0], а в множестве {0,1,3} то будет True.
Добрый день! Когда планируете следующие уроки?
Добрый!
завтра-послезавтра
def my_func(input_set, input_list):
if input_set | set(input_list) == input_set:
return True
else:
return False
Насколько я понял. множества используется как удалит?ель двойников и тд?
Блин, вторю задачу решил совсем "косноязычно"))
def func (Set,List):
e=0
for el in List:
if el in Set:
e+=0
else:
e+=1
if len(set(List))>len(Set) or e>0:
return False
else:
return True
Не смотрел как делал автор, но у меня получилось как-то так:
a = [1,1,1,2,2,2,3,3,3]
b = set(a)
temp = 0
for element in b:
temp += element
print(temp)
Задача №1:
my_list = [1, 1, 2, 5, 10, 10, 10]
total = 0
a = list(set(my_list))
for el in a:
total += el
print(total)
li = [2, 4, 5, 3, 3, 5, 20, 20, 4, 4]
se = set()
a = 0
for b in li:
if b not in se:
a += b
se.add(b)
print(a)
print(se)
У тебя на канале есть продвинутая Джава - плейлист, вроде Джава. Не суть. Просто хотел предложить после курса по Питону сделать то же. Жаль, что на ютубе только лайк и дизлайк. Почему нет, допустим: Одно из лучших видео на ютубе. Я б поставил тебе такое.
Еще одно. Задачки сложноваты, особенно для новичков. Это, конечно, круто, что показуешь, как решить. Но, хотелось б и полегче. Почему б не делать две: одна сложная, другая легкая ? Что б никому не в обиду :)
return input_set==set(input_list)
не?
Не согласен с утверждением во второй задаче: Если длина листа больше длины множества то возвроащаем False, лист может быть из 5 элементов [1,1,1,1,1] а множество из 3 элементов {0,1,2} в таких случаях мы должны вернуть True
Добрый день!Когда будет продолжение???
скоро!
@@alishevN спасибо
my_list = [1,1,2,2,5,5,10,10,11,12,12,17,17,28,28]
my_set = set(my_list)
sum_set = 0
for el in my_set:
sum_set += el
print(sum_set)
задача 2:
def func(s,l):
return(set(l)
Просьба помочь со второй задачей про сравнение множества со списком, написал такой код он работает:
s ={1,2,10,4,5,'hello'}
l=[4,5]
k=[]
for i in l:
if i in s:
k.append(0)
else:
k.append(1)
if sum(k)==0:
print('true')
else:
print('false')
выдает:
true
Пытаюсь переделать в функцию:
s=set(input())
l=list(input())
def fun1(s,l):
k=[]
for i in l:
if i in s:
k.append(0)
else:
k.append(1)
if sum(k)==0:
return True
else:
return False
НЕ РАБОТАЕТ! Что я делаю не так?
Прошу прощения. Наиль, а сколько будет вобще уроков ? Просто я почитал комментарии и ответы. Везде по разному. Там 30, а там 40. Я понимаю, вы стараетесь делать уроки. Хотя, не столь важно. Главное, чтоб скорее продолжение и побольше информации и практики. Я веру в вас !!!
Примерно 30. Новые уроки - как только, так сразу.
@@alishevN Круто. Спасибо !
Уже жду следующие уроки, Наиль ! Спасибо за старания !
А почему вы так редко записываете уроки?
Насколько я понял, Ваше решение второй задачи неверно. Ведь список может содержать множество одинаковых значений. К примеру: [1,1,1,1,1] {1,2,3} - функция вернет False, так как длина списка больше, но при этом значение находится в множестве
задача 2:
def func(s,l):
return(set(l)
Можно убрать эту проверку и всё
если кто-нибудь так же как и я решил изучать питон в 2к21, подскажите, правильно ли я сделал функцию?
def my_phonc(input_set, input_list):
for el in input_list:
if el in input_set:
input_set.add(el)
else:
return False
return True
Всё работает, но я не уверен почему-то что все хорошо, потому что я не до конца понял что я сделал) Т.е. Если элемент есть в множестве, то он добавляется в множество(тем самым мы просто его убираем) и переходим к следующему элементу. Если он не подходит, выдаем False. Если подходит, добавляем в множество и переходим к последнему этапу
Задача №1
Некрасивое решение, но вроде бы работает
lst = [1, 1, 2, 5, 10, 10, 10]
a = set(lst)
x = [el for el in a]
print(sum(x))
Первая задача!
a =[1, 1, 2, 5, 10, 10, 10,]
b=set(a)
sum=0
for i in b:
sum+=i
print(sum)
my_list = [1, 1, 2, 5, 10, 10, 10]
my_set = set(my_list)
print(my_set)
a = sum(el for el in my_set)
print(a)
Из урока в урок я ловлю себя на мысли, что не понимаю предназначение некоторых возможностей в питоне. К примеру, я не могу себе представить при каких обстоятельствах мне понадобится прописать код, который найдёт (или не найдёт) какой-то элемент в списке, если я могу просто глянуть на этот список самостоятельно. То есть, я не понимаю, как это поможет мне в дальнейшем, когда я уже начну писать программы. Для чего эти, на первый взгляд бесполезные, возможности нужны. А так уроки очень толковые, пожалуй лучшие из тех, что я смотрел. Хотя, признаюсь, не всё запоминается и не всё поддаётся моему уму, некоторые фишки просто заучил на память, так и не поняв как они работают. Но это уже проблема во мне, а не в преподавателе, потому что я, как оказалось, слишком туповат для программирования и вообще непонятно зачем продолжаю его учить. Но тем не менее благодарю за уроки!
представьте, что список из миллиона элементов. Тогда уже вручную не найдете, а питоновский код сделает за одну секунду.
@@alishevN то есть это исключительно для работы с кодом? В самой программе, которую я в будущем могу написать, этому нельзя найти никакого применения?
@@yufak9674 нет, не исключительно для работы с кодом. Продолжайте изучать и пока не думайте так много над практическим применением. То, что вы сейчас изучаете - это база и без нее невозможно реализовать любую программу.
@@alishevN хорошо, благодарю Вас за ответы, и ещё раз благодарю за Ваши уроки!
mylist=[1,1,1,2,2,3,10,5]
print(sum(i for i in set(mylist))
Моё решение:
def my_func(input_set,input_list):
this_set = set(input_list)
if this_set == input_set:
return True
else:
return False
print(my_func ({1,2,4}, [1,2,4]))
Решение 2-й задачи.
def fuf(setl,list2):
for i in list2:
if(i in setl):
j = bool(1)
else:
j = bool(0)
j = j * j
if(j == 1):
return 'Все элементы списка присутствуют в множестве'
else:
return 'Не все элементы списка присутствуют в множестве'
#-----------------------------------------------------------------------------------------------------------------
print('Введите элементы, входящие в множество, через запятую.')
x = set(input())
print('Введите элементы, входящие в список, через запятую.')
y = list(input())
print(fuf(x,y))
def mf(my_set, my_list):
if len(my_list) > len(my_set):
return False
for a in my_list:
if a not in my_set:
return False
return True
print(mf(set([1,2,3]),[1,2]))
мое решение:
def my_func(input_set, input_list):
a = set(input_list)
b = input_set.union(a)
if input_set == b:
return True
else:
return False
Мой вариант решения. Я не подглядывал.
my_set = set(my_list)
my_sum = 0
for s in my_set:
my_sum += s
print(my_sum)
Больше видео по Spring, меньше по Python! А если еще и Hibernate будет - сына назову Наилем)
Кстате, ничего, если буду обращаться на ты ?
Мы же все одна семья на канале, так ? А ты, Наиль - глава и добрый учитель.
sum = 0
my_set = set(my_list)
my_list = list(my_set)
for el in my_list:
sum += el
print (sum)
неправильно розвязаний приклад про list та set
то чувство когда получился пример, я то начал думать что совсем уже бошка не варит
Блин, очень понравились твои уроки и с них начинал учить пайтон, но, как я понимаю, ты ничего с них на зарабатываешь и нету столько свободного времени их делать. Сделай лучше полный курс по Пайтону на Udemy, я только там сейчас все изучаю и если ты сделаешь полный платный курс, то я готов за него платить и 200 и 500 долларов.
# Задача 1
listToCheck= [ 1, 2, 3, 1, 5, 4, 5, "hello"]
total=0
for i in set(listToCheck):
if type(i)== int:
total+=i
total
# Задача 2
# Вариант решения 1
set1={1,2,3,4,6,7,9, 10, 11, 15}
list1=[2,3,4,3,4,3,9, 10, 11,16 ]
def checkTo(mySet, myList):
for i in range(len(myList)):
if myList[i] not in mySet:
return False
elif i+1==len(myList) and myList[i] in mySet:
return True
a= checkTo(set1, list1)
print(a)
# Вариант решения 2 (короткий)
set1={1,2,3,4,6,7,9, 10, 11, 15}
list1=[2,3,4,3,4,3,9, 10, 11 ]
def checkTo(mySet, myList):
for i in list1:
if i not in mySet:
return False
return True
a= checkTo(set1, list1)
print(a)
А дальше ...
Эй, нам spring нужен, а не это вот все :р
Есть и другая аудитория, которой нужен Python.
Урок по спрингу будет следующий.
@@alishevN да я же шучу :) просто пишу чтоб в топ твои видео поднять. Ты лучший! Спасибо за твои видео.
Спасибо! :)