Тёмный

27 Метод подсчета. Сортировка подсчетом Python 

egoroff_channel
Подписаться 140 тыс.
Просмотров 74 тыс.
50% 1

Опубликовано:

 

1 окт 2024

Поделиться:

Ссылка:

Скачать:

Готовим ссылку...

Добавить в:

Мой плейлист
Посмотреть позже
Комментарии : 94   
@egoroffchannel
@egoroffchannel 4 месяца назад
🫵 Теория без практики - ничто, поэтому 👇 🐍 stepik.org/course/63085/promo 👉 специально для тебя создал бесплатный топовый курс по Python 👉 В нем тебя ждет: 📗 более 400 практических заданий на программирование 📗 более 250 тестовых заданий на проверку материала 📗 десятки часов видеоматерилов по теории 📗 видеоразборы решения заданий 📗 текстовые материалы по урокам, примеры кода 📗 доступ к закрытому чату с дружественной обстановкой 📗 сертификат в случае успешного прохождения курса
@thepoison1003
@thepoison1003 Год назад
бип бип бип бип бип бип бип бип, это переставляем сюда , это вот сюда дописываем(беру команду которую разбирали в третьем занятие вскользь за 5 сек. которую уже конечно никто из новичков не помнит) и всё прекрасно работает. А почему это так делаем, автор не объясняет. Просто потому что. Но это же материал не на запоминание, он на понимание, нужно разжёвывать, что и как а главное почему так, а не иначе делаешь. Объясняет автор основы не плохо, но вот практические решения для новичков просто выглядит как лютая дичь. Всё быстро, всё вскользь, без толкового разъяснения.
@MsWithoutNick
@MsWithoutNick Год назад
я честно говоря тоже на этом уроке зависла конкретно. вчера вечером 2 раза посмотрела начало ничего не поняла. на утро решила пересмотреть. тоже ничего не понимаю с 3 раза. про подсчет. ну как-то как бы... да...!
@Anton16180
@Anton16180 Год назад
В уроке не объяснен принцип, по которому строится конструкция метода. Потратил 4 часа. Вдруг кому пригодится. # Функция метода смещения для чисел def number_count(lst): offset_number_count_lst = [0] * len(range(min(lst)-1, max(lst))) index_offset = abs(min(lst)) for i in lst: offset_number_count_lst[i+index_offset] += 1 result = [] for i in range(len(offset_number_count_lst)): if offset_number_count_lst[i] > 0: result.append((i-index_offset, offset_number_count_lst[i])) return result
@valley527
@valley527 4 года назад
блин нифига не понятно, такое ощущение что автор куда то спешит, все вперемешку
@alexandrshatilov8227
@alexandrshatilov8227 4 года назад
он и так довольно подробно объяснил. Если тебе не понятно, то, скорее всего, тебе стоит сначала изучить вещи попроще. До этого есть ещё 26 уроков, я их не смотрел ес честно)))(только про установку pycharm), но, думаю, что за 27 уроков он объяснил чё такое индексы, циклы, что такое отладка и всё это безобразие. Так что, то, что тебе ниче не понятно, - это большей частью твоя проблема
@valley527
@valley527 4 года назад
@@alexandrshatilov8227 спасибо за совет, я их смотрел. Но так как это все таки уроки для начинающих, а ученики бывают разные, есть особо одаренные, есть тупые как я, то нужно более подробно обьяснять такие моменты, и не мешать все в одну кучу.
@NikolaiKim
@NikolaiKim 4 года назад
@@valley527 тоже самое, все смотрел, а теперь дичь
@NikolaiKim
@NikolaiKim 4 года назад
Пересмотрел с 23 урока второй раз и стало все понятно. Тебе тоже советую
@valley527
@valley527 4 года назад
@@NikolaiKim уже нашёл других учителей, в частности Андрей Андреевский очень хорошо объясняет, весь интернет перелопатил не мог понять что такое классы и как их применять, после его ролика все стало понятно. Но спасибо и автору этого урока, он дал мне кое какие основы
@dmitrii_kotoff
@dmitrii_kotoff Год назад
Пример из урока вот так модифицировал, чтоб можно было в список любое положительное число добавить, а не только до пяти: a = [5, 1, 2, 3, 2, 1, 2, 3, 3, 2, 1, 3, 5, 3, 2, 33] n = max(a) + 1 # n - вместо 6 count = [0] * (n)
@tankist5934
@tankist5934 3 года назад
Дошел до 27 урока. Все понятно и разложено по полочкам. Так же стал впервые спонсором. Для написания кода использую Visual Studio Code. Так же для закрепления тем делаю задания, которые мне сбрасывает брат(учится на программиста). Так вот, что я скажу. За пару дней обучения, написал примитивную программу калькулятора. Автору данного канала надо идти в преподаватели. Хорошее преподнесение материала. Годный контент. + советую смотреть лекции Тимофея Хирьянова.
@egoroffchannel
@egoroffchannel 3 года назад
куда идти преподавать?)
@АзаматКеримов-б7б
@АзаматКеримов-б7б 3 года назад
@@egoroffchannel мфти
@ВероникаР-ю9ш
@ВероникаР-ю9ш Год назад
@@egoroffchannel с Вашим талантом доносить информацию в любой элитный универ)
@nicholasspezza9449
@nicholasspezza9449 Год назад
тут всего 6 видосов, ты там под солями чтоли?
@Наталья-р4д9ф
@Наталья-р4д9ф 2 месяца назад
как успехи в программировании?
@njpk666
@njpk666 4 года назад
Очень хорошо и доступно объяснил спасибо
@vasbkamarxil1260
@vasbkamarxil1260 2 года назад
сложно . . . как это уложить теперь) чувствую себя двух ядерным)
@doinkes7764
@doinkes7764 2 года назад
Уроки эти смотрю вроде все понятно, а как доходит до задания на степике, где процент решения 20-30%, то все валюсь, ничего не помню и не понимаю, аж плакать хочется. и эта тема в том числе.
@francoislacoste2113
@francoislacoste2113 2 года назад
подскажите, а в чем смысл таких извращений, если десятки лет назад умными людьми был прописан count()?
@egoroffchannel
@egoroffchannel 4 года назад
Стать спонсором ru-vid.com/show-UCMcC_43zGHttf9bY-xJOTwAjoin Стать патроном www.patreon.com/posts/34559680 www.patreon.com/artem_egorov
@alex_pure
@alex_pure 2 года назад
Переключение гравитации: n = int(input()) a = list(map(int, input().split())) count = [0] * (max(a) + 1) for i in a: count[i] += 1 for i in range(len(count)): print((str(i) + ' ') * count[i], end='')
@alex_pure
@alex_pure 2 года назад
Щедрый Кефа: n, k = list(map(int, input().split())) s = list(input()) count = [0] * (ord(max(s)) - 96) for i in s: count[ord(i) - 97] += 1 for i in range(len(count)): if count[i] > k: print('NO') break else: print('YES')
@alex_pure
@alex_pure 2 года назад
Веселая шутка: n = list(input()) k = list(input()) nk = n + k s = list(input()) letters = [0] * 26 for i in nk: letters[ord(i) - 65] += 1 for i in s: letters[ord(i) - 65] -= 1 for i in range(len(letters)): if letters[i] != 0: print('NO') break else: print('YES')
@ЕрвандАгаджанян-в3к
Ребята, чтобы вы не пугались этого непростого способа подсчета (который все равно нужно знать), есть более гуманный способ: from collections import Counter s = [2, 1, 2, 3, 2, 1, 2, 3, 3, 2, 4, 3, 5, 4, 2] print(dict(Counter(s)))
@hrostmystepko1832
@hrostmystepko1832 2 года назад
Задача 1 . Гравітація ______________________________ n = int(input()) a = list(map(int, input().split())) s = [0] * 101 for i in a: s[i] += 1 for i in range(101): if s[i]>0: print((str(i)+' ')*s[i],end='')
@apex_alina
@apex_alina 3 месяца назад
То есть, чтобы использовать данный метод нам необходимо заранее знать, какое количество элементов содержит введённый список???
@AndronM
@AndronM 2 года назад
А почему 21 значение? Вроде в функции random.randint() последнее число не включается?(11:52)
@Dmitrii-Zhinzhilov
@Dmitrii-Zhinzhilov 2 года назад
Артём, благодарю! Отличный урок! 🔥👍🤝
@ananasanimator6049
@ananasanimator6049 Год назад
Переключение гравитации: old = list(map(int, input().split())) new = [0] * (max(old) + 1) for i in old: new[i] += 1 for i in range(max(old)+1): if new[i] > 0: print((str(i) + ' ') * new[i], end='')
@bot_N666
@bot_N666 Год назад
Почему вы не используете возможности автоматизма некоторых значений? count = [0] × len(a) Или еще: смещение = 0 - min(a)
@AndyMooren
@AndyMooren Год назад
Потому что это в корне не верно. len(a) = 10 т.к. список в целом состоит из 10 рандомных значений. А count мы используем для подсчета ВСЕХ возможных значений, а их 21. Во-вторых, смещение в Вашем случае можно быть ошибочно в случае, если минимальное значение(а у нас РАНДОМНЫЕ значение, т.к. -10 будет в списке далеко не каждый раз) будет не равно -10.
@Dim_chick
@Dim_chick 2 года назад
Изменение гравитации n = int(input("Кол-во столбов: ")) count = [] if 1
@Sofronov_channel
@Sofronov_channel Год назад
a = [1, 2, 3, 4, 3, 5, 6, 4, 3, 7] double = [] for index, item in enumerate(a): if a.count(item) > 1: double.append(index) print("Индексы повторяющихся элементов:", double)
@Искатель-ч7ц
@Искатель-ч7ц 2 года назад
а как решить такую задачу со словами? по количеству расположить количество слов в строке?
@konstantinkist
@konstantinkist 6 лет назад
Мне кажется что не опытным ребятам было - бы проще понять почему вы использовали смещение именно на 10, если бы вы сразу создали переменную со значением 10 и дальше использовали ее... Хотя, может я и не прав, но мне кажется что так проще проследить связи...
@egoroffchannel
@egoroffchannel 6 лет назад
спасибо за комментарий. Главное, чтобы понимали саму суть смещения и почему без него не обойтись. А где его хранить, значением или в отдельной переменной, это уже дело реализации.
@C0oo1D
@C0oo1D 6 лет назад
Magic numbers.. По моему, данная практика ни в одном языке не приветствуется.. Но это не точно)
@donrumata9197
@donrumata9197 2 года назад
Спасибо. Ловкие варианты реализации. Мне нравится
@АлександрГригоренко-г8к
Спасибо за очередной хороший урок. Подскажи, какие настройки шрифта в PyCharm ты используешь? А то дефолтный мне не нравится, а чтобы, как у тебя не получилось сделать.
@egoroffchannel
@egoroffchannel 5 лет назад
я менял только размер шрифта, больше ничего
@АлександрГригоренко-г8к
@@egoroffchannel а как называется шрифт?
@egoroffchannel
@egoroffchannel 5 лет назад
@@АлександрГригоренко-г8к DialogInput
@АлександрГригоренко-г8к
@@egoroffchannel спасибо!
@jamshidomonov551
@jamshidomonov551 Год назад
Здравствуйте Артём посмотрев этот видеоурок я не понял одно: почему вы написали letters = [0] * 26 Объясните пожалуйста откуда взяли нуливой индекс ?
@makseo651
@makseo651 Год назад
Если говорится о списках, то почему не использовать для подсчета элементов метод списка - count ?
@hrostmystepko1832
@hrostmystepko1832 2 года назад
Вариант решения 2ой задачи, но не уверен что он правильный __________________________________________________________________ n=int(input()) k=int(input()) a=input() l=[0]*n x=0 for i in a: l[ord(i)-97]+=1 for i in range(n): if l[i]>0: if l[i]/k!=1: x+=1 if x>0: print('NO') else: print('YES')
@sbhajasbajqihsiwb3379
@sbhajasbajqihsiwb3379 2 года назад
я в ах*е
@onlaynstudy8811
@onlaynstudy8811 Год назад
Спс.Хорошо объясняете... Ели ели понял
@neopoligraf9991
@neopoligraf9991 4 года назад
Хороший урок, спасибо!
@nikman3291
@nikman3291 4 года назад
У меня проблема с воспроизведением программы (ну то есть которую мы создаём с помощью кодов). Я видел, что у вас есть Run 'podshet', но у меня его нету (я знаю, что 'podschet'-это имя').Что делать в этой ситуации?
@smileofnight9187
@smileofnight9187 Год назад
м
@АлексейМатурин-щ2е
Веселая шутка еще одно решение, в ютубе есть видео , где объясняют довольно понятно import sys guest_name = list(sys.stdin.readline()[:-1]) host_name = list(sys.stdin.readline()[:-1]) pile = list(sys.stdin.readline()[:-1]) while len(pile) != 0: if guest_name.count(pile[0]) == 0 and host_name.count(pile[0]) == 0: print('NO') sys.exit() else: if guest_name.count(pile[0]) != 0: guest_name.remove(pile[0]) else: host_name.remove(pile[0]) pile.remove(pile[0]) if len(guest_name) !=0 or len(host_name) != 0 or len(pile) != 0: print('no') else: print('yes')
@frogfrogfrog6288
@frogfrogfrog6288 5 лет назад
боже как красиво
@serhiilykhodid8911
@serhiilykhodid8911 5 лет назад
Мои решения задач урока: Переключение гравитации: n = int(input()) a = map(int, input().split()) a = list(a) b = [0] * (max(a) + 1) for i in a: b[i] = b[i] + 1 for i in range(max(a) + 1): if b[i] > 0: print((str(i) + ' ') * b[i], end='') Веселая шутка: a = input() b = input() mix = input() c = a + b x = '' z = '' letters = [0] * 26 letters2 = [0] * 26 for i in c: nomer = ord(i) - 65 letters[nomer] = letters[nomer] + 1 for i in range(26): if letters[i] > 0: x = x + (str(chr(i + 65)) * letters[i]) for i in mix: nomer2 = ord(i) - 65 letters2[nomer2] = letters2[nomer2] + 1 for i in range(26): if letters2[i] > 0: z = z + (str(chr(i + 65) * letters2[i])) if x == z: print('YES') else: print('NO')
@Mr_Boriss
@Mr_Boriss 4 года назад
у меня сам по себе закрывает мой файл и пишет, что то про защитник виндовс
@mefodymo7456
@mefodymo7456 4 года назад
👍
@ДмитрийВасильев-ж1е4ь
в randint не как в range, последнее число берет включительно? randint(-10, 10) = 21, не 20?
@bossd465
@bossd465 4 года назад
Задача А переключение гравитации: n = int(input()) s = input().split() a = list(map(int, s)) b = [0] * n for i in range(n): for j in range(n - 1, i,-1): if a[i] > a[j]: a[i], a[j] = a[j], a[i] print(a)
@bot_N666
@bot_N666 Год назад
Я так понимаю это метод сортировки пузырьком?
@ЖуйГуй
@ЖуйГуй 5 лет назад
Спс за видео, бро
@КузькинДима
@КузькинДима 5 лет назад
alist = list(range(1, 11)) random.shiffle(alist)
@hrostmystepko1832
@hrostmystepko1832 2 года назад
Может кто-нибуть подскажет почему в Pycharm при вводе через команду: n,k=map(int,input().split()) выдает такую ошибку: ValueError: invalid literal for int() with base 10
@bot_N666
@bot_N666 Год назад
list не реализовали
@BostonZakim
@BostonZakim 5 лет назад
Пишу для себя условия задач из урока и потом по условию решаю самостоятельно на следующий день для закрепления. Может кому будет полезно: 27 метод подсчета. Сортировка методом подсчета. Задача: подсчитать сколько раз встретилось каждое число в этом списке. вывести списком. затем, вывести цифру и сколько раз она встречалась затем, не выводить цифру которая не встречалась ни разу затем, отсортировать список по возрастанию a = [0, 1, 2, 2, 2, 1, 2, 3, 3, 2, 2, 3, 5, 3, 2] count = [0] * 6 for i in a: count[i] += 1 print(count) #вывести списком. for i in range(6): if count[i]>0: print(i, count[i]) #вывести цифру и сколько раз она встречалась a = [0, 1, 2, 2, 2, 1, 2, 3, 3, 2, 2, 3, 5, 3, 2] count = [0] * 6 for i in a: count[i] += 1 print(count) for i in range(6): if count[i]>0: print((str(i)+' ')* count[i],end='') задача. Есть строка, где написаны буквы, большие и маленькие, цифры и знаки пунктуации. Нужно посчитать сколько раз встретилась каждая буква. Разницы между большими и маленькими буквами нет. Знаки не считать. Условием задано букв 25. s = 'asdf sffaaafdf g FFsdfEE 234566 ^***&' letters = [0]* 26 for i in s.lower(): if 'a' 0: print(i - 10, count[i])
@egoroffchannel
@egoroffchannel 5 лет назад
я на сайте www.egoroffartem.ru/course/python/ по мере возможности под каждым видео пытаюсь разместить текстовую версию каждого занятия
@BostonZakim
@BostonZakim 5 лет назад
@@egoroffchannel я всегда после урока проверяю все что написано под видео в ютуб и по ссылке на сайт тоже захожу, опускаюсь вниз и пересматриваю задачи. Но там обычно задачи космос, у меня их мозг просто не воспринимает. Хочется хотя бы самому воспроизвести то что рассказывали.
@egoroffchannel
@egoroffchannel 5 лет назад
я не про задачи говорю, а про текстовый вариант видео. к примеру вот www.egoroffartem.ru/course/python/41
@BostonZakim
@BostonZakim 5 лет назад
@@egoroffchannel да, круто. Я просто туда еще не дошел. На 27 уроке еще :)
@вМайнкрафтена
@вМайнкрафтена Год назад
Да, очень быстро рассказывает, и так в каждом видео
@alexseydugin8109
@alexseydugin8109 4 года назад
На 13:28 есть -10, а потом уже куда то пропала
@lashmyash
@lashmyash 4 года назад
список состоит из рандомных чисел, при повторном запуске программы список генерировал их заново
@alexseydugin8109
@alexseydugin8109 4 года назад
Alisa Shalamova эээ точно, спасибо :)
@АлексейМатурин-щ2е
Веселая шутка, решено по другому def main(): name1 = input('enter name') name2 = input('enter name') scum_worlds = input('letters') foo(name1, name2, scum_worlds) def foo(name1, name2, scum_worlds): name1 = name1 + name2 name1 = list(name1) name1.sort() scum_worlds = list(scum_worlds) scum_worlds.sort() if scum_worlds == name1: print('YES') else: print('NO') if __name__ == '__main__': main()
@yodapunishes
@yodapunishes 5 лет назад
Супер!
@jamjam3337
@jamjam3337 Год назад
👏
@danielsmith7840
@danielsmith7840 4 года назад
Very Good
@rollangrant8347
@rollangrant8347 4 года назад
фишка в том, что этот метод работает только с положительными числами))
@egoroffchannel
@egoroffchannel 4 года назад
Нет, ты можешь сделать смещение своим отрицательным числам до нулевого индекса, и вперед
@denistalko6585
@denistalko6585 2 года назад
Отличное объяснение! Спасибо!
@dimaan29
@dimaan29 4 года назад
count[i] += 1 - в нем выдает ошибку 'list index out of range'
@timd9077
@timd9077 4 года назад
Возможно ты в самом начале в списке "а" вписал цифры превышающие количество нолей в списке count .
@loqlok5961
@loqlok5961 5 лет назад
Возможно глупый вопрос, но он мне не дает покоя. Почему в 3-ей строке "i" определяется как элемент списка "а", а не как индекс, ведь до этого мы никак не обозначали "i"? Заведомо заложено, что при подобном использовании цикла переменная будут означать элемент? Спасибо.
@egoroffchannel
@egoroffchannel 5 лет назад
Происходит автоматическое присвоение переменной i и если до этого переменная не существовала, она будет создана
@bbmdick4324
@bbmdick4324 4 года назад
кто первую задачу решил?
Далее
28 Вложенные циклы Python
16:45
Просмотров 108 тыс.
#慧慧很努力#家庭搞笑#生活#亲子#记录
00:11