Вот хороший собес, полезный для просмотра. Все объяснили, достаточно глубоко. Собесы с реальными джунами часто не дают хороших ответов на вопросы. Спасибо, полезно!
два профи пообщались) как это поможет джуну на реальном проекте? которому нужна в первую очередь уверенность, а не теория? но такие видео ведут только на очередные ненужные курсы. Почему на курсах не уточняют, что из следующих 10 параметров используют только 1-й, очень редко еще и 2-й. А остальными 8-му не нужно забивать свою оперативку в голове. Но ты зазубрил все 10, но не знаешь даже главной особенности того 1-го, с которым ты и будешь постоянно работать первые 3 года)).
Хороший собес! Респект ребятам, которые это делают, молодцы. Еще бы тайм коды на видео добавили - супер чудесно бы было. Сервис для перезентаций тоже понравился
Я офигел... В хорошем смысле слова. Это Тимур Гуев, сейчас прохожу для профиков) Первый раз его увидел и услышал. Пришлось фото загуглить, дыбы не лажануть с комментом. Интересная беседа.
Прошел три курса "Поколения Python" и привык к конкретным ответам, решая задачи. Точно такая задача про словарь из двух списков была у Пронина, я решил прям как на видео. А по итогу сказали надо расширять сознание, и если списки не равны нельзя терять данные. Необходимо при большем количестве ключей использовать например zip_longest. А если остались не используемые значения их например в отдельный список или в отдельный ключ.
в целом интервью очень приятное. "рядовым программистам комплексные числа никогда не потребуются" -- но при этом пару минут убили на обсуждение... а в сумме на обсуждение float/decimal убили минут пять. интервьюер сильно влюбился в слова "гомо/гетерогенный". к чему бы это ))) всегда поражает, как с одной стороны люди в матрице нули ищут, а с другой -- не знают, что такое "+=". и ещё более забавно, когда человек, писавший на с# говорит, что поведение "+=" неочевидно...
контент хороший раньше не использовал decimal и не знал. для последнего задачи оптимальнее было бы: def foo(m): c = 0 while m and m[0][0] == 0 and (l:=m.pop(0)): l.append(1) c += l.index(1) return c
Классный контент, с удовольствием посмотрел. Многое из внутренностей питона для меня оказалось открытием, а задачку в конце я решил за секунды после ее озвучивания. Но я понимаю, что смотрю это спокойно на диване, а в реале мог бы и потеряться. Даже еще бы предложил метод пузырьковой сортировки для более быстрого обегания границы между нулями и единицами. Т.е. найти последний 0 в первой строке и последний 0 в последней строке, посчитать средний наклон спуска по диагонали... Но в 999 из 1000 случаев это на самом деле не нужно. Тем более питон это не про скорость.
Привет, понимаю что видео уже как год, но под описанием видео нет ссылки на ресурс посмотреть про +=? Если можно было бы крайне интересно Заранее спасибо
А почему не сказано про длинную логику/вычислений, что целые числа обладают неограниченной точностью… Почему в исключениях не привели банальный пример: ctrl + c, было только сказано про ошибки вычислении чего-то
Вот мое исполнение: def count_zeros(arr: list): if len(arr) == 1: return arr[0].count(0) if len(arr[0]) == 1: return len(arr) - sum([x[0] for x in arr]) c = 0 for i in range(min(len(arr), len(arr[0]))): if arr[i][i]: break c += 1 part1 = [row[:c] for row in arr[c:]] part2 = [row[c:] for row in arr[:c]] return c ** 2 + count_zeros(part1) + count_zeros(part2)
Из 21 минуты объяснение: Просто попробуйте data[0] = data[0] написать в 3й строке. И все станет понятно. Питон не особо смотрит что вы там в кортеж по индексу присваиваите. Даже тот же самый элемент вызовет эксепшн. А строка data[0] = some + super + mega + expression конечно сначала начнет вычисляться с правой части
Задача с матрицей Ментр сообщает, что можно работать с индексами Тогда почему нельзя представить матрицу как typle a = ((0, 0, 1, 1), (0, 0, 1, 1), (0, 1, 1, 1), (1, 1, 1, 1)) summ = 0 а для подсчета сделать так? for i in a: summ += i.index(1) тут ведь так же сложность линеная
на сколько я знаю, сложность метода index() - O(n) в худшем случае, так как элемент с искомым индексом может быть в самом конце списка(кортежа) и в общем, в худшем случае, цикл for дает нам сложность O(n) и поиск индекса 1 нам тоже дает O(n). В сумме будет O(n2) ну или O(n * m) если матрица не квадратная.
Подскажите пожалуйста, сколько лет экзаменуемому и сколько времени он учился. Реально на уверенном, еще и приукрасить успевает, типа 10ка будет преследовать нас как хвост. Весело.
Ого, вы теперь еще и собесы делаете - вообще респект. А кто ведущий? Не шахматный ли человек-матрица, случаем? :D P.S. А Эдуарду респект - сразу видно, что разбирается во внутрянке Питона. Зачет.
@@Nina-hy4ql т.к. вопросы про азы, ну почти, и про фреймворки ничего не спросили, + задака на алогритмы не сложная, хотя, как уже сказано, это не собес)
Как я решил задачу с матрицей: def count_zeros(m): c = 0 i = len(a[0]) for x in a: i = x[0:i].count(0) c += i return c В каждой строке количество нулей (которые только в начале) не больше, чем в предыдущей, таким образом, мы постепенно будем проверять все меньшую и меньшую часть (срез) строки, так как всю строку проверять смысла нет. Я не сделал никаких проверок на единицу в цикле, так как(по моему мнению) сами эти проверки отнимают время. Подскажите, какую скорость имеет данный алгоритм?
Это вообще работать не будет, поскольку "а" не определено. Ну и сложность О(n**2), потому что в цикле for на каждой итерации count, что тоже является циклом. Итого, цикл в цикле.
я вот тоже смотрел - и подумал, что его потуги решить ту задачу как-то не гармонируют с тем, что он показал ранее) А еще подумал что то, что они отсортированы по вертикали н6е имеет значения.
Не совсем понял чем не угодил проход циклами по всем строкам матрицы для выявления всех нулей. Сколько раз я уже видел такое, да код красивый, но черт ногу сломит в логике, вместо того что бы написать на 2 строки больше но зато все понятно как в азбуке. Никогда не понимал этого.
потому что суть задачек на алгоритмы не в том чтобы проверить как код в проде ты будешь писать, а именно что проверить смекалку, навыки именно в алгосах и структурах данных
@@rednil8242 Так а это чем не алгоритм с циклом то? я помню когда начинал учить питон столько велосипедов ненужных , работающих, но соверншенно ненужных, поизобретал что боольше чет и не хочется.
@@Anshegar тем что до него додумываться почти что не надо задачка и так изи-медиум, смысл не показать что кандидат просто цикл умеет писать, но в том что догадается до оптимального решения. буквально вчера с этим на собесе столкнулся, с квадратичной сложности до линейной оптимизировал.
Самое печальное в этом всем то, что на реальной работе знания 90% этих вопросов если и понадобятся, то один раз в жизни. А углубленная информация скорее всего не понадобится никогда. Но чтоб пройти собеседование знать это надо и чем глубже тем лучше.
Про finally и отключение э-ва. Скорость света 300000 км/с. Или 300 км за 1 мс (милисекунду) - Если, допустим, электростанция находится от нас в 3000 км и на ней произошла авария, то свет у нас погаснет только через 10 мс. И если наш код выполняется быстрее, чем 10 мс - то finally имеет шансы быть выполненным.
С листами и кортежами слишком оверлоад. Не правильно так делать. Это лишь две "почти одинаковые структуры данных" Динамические масив для листа и статический для кортежа. И от туда уже выходит их юз кейс. Человек ответил что итерация через кортеж быстрее что не являеться правдой. ВО первых бенчмарк написать 30 секунд и посмотреть что они одинаковые и даже чаще выигрывает лист(но это зависит от рантайма). Второе чисто знать их структуру что тоже дает ответ что в инетрации как и аксесе нету быстрее или медленее. Пустую аллокацию лист не итерирует.
О хэш таблице. Человек рассказал о старом представлении хэш таблиц в пайтоне. + не рассказано о пробации\колизия\решению кол и тд. Тема очень глубокая. И если уже упоминать у то что знаешь глубь то или рассказывать детально или вообще не рассказывать а то порождает только непонимание.
39:52 Проверил в VS code, вывело это: [10, 'a'] [123] [10, 'a'] Собственно, получается Тимур неправильно сказал, что в первом выводе будет только 10. Или в чем проблема?
@@A.AA.A-qo6tw так задача стоит что выведет код, и вывело собственно, то что я написал. А не то что сначала выведет первый принт, второй и третий, и почему так произошло, если вывести сразу все.
def count_zeros(mat): zeroes = 0 for i in range(len(mat)): for j in range(len(mat[i])): if mat[i][j] == 0: zeroes += 1 else: break return zeroes так красивее , нет ?
Во-первых, это не нанимаете на работу, а MOCK собеседование. Во-вторых, если вы не знаете, что происходит под капотом, то в некоторых ситуациях консоль вам не поможет решить проблему. И знать как всё устроенно внутри, куда полезнее, чем бездумно писать код.
@@A.AA.A-qo6tw я всегда смотрю консоль и в 100% всегда решаю сложные задачи. В любом другом случае все уже решено и нужно искать ответ в интернете. Либо читать документацию.
Ребята, ну выучите, наконец, как правильно произносить else и прочие английские слова! Так режет ухо, что хочется спросить кто вас так научил? Или сами решили за англичан так произносить? А самое страшное, что свою неграмотность вы ещё и мультиплицируете!
Очередное тупое собеседование. Важны не знания основ, а мышление программиста. Выучить язык при необходимости ума большого не надо, а вот интеллект важен всегда. Короче, очередной эйчаровский тупизм.
И прямо со старта... >>> import decimal >>> a = decimal.Decimal(0.3) >>> b = decimal.Decimal(0.1) >>> a + a + a + b Decimal('0.9999999999999999722444243843') >>> >>> 0.3 + 0.3 + 0.3 + 0.1 0.9999999999999999 >>> Разницы в результате тупо нет, те же самые 16 девяток после точки, а потом неестественный хвост как бы приклеен. Ну, раз кому-то неправильный результат с колбасой в 28 знаков милее -- дело хозяйское. В данном случае "точность" означает "подробность", но никак не "правильность". Что в регистрах, что в ячейках оперативки одна и та же двоичная система, иначе и быть не может. Так что если считать десятичные дроби, нужен не компьютер, а калькулятор. И кортеж со списком длиной даже в миллион -- при линейном чтении разница в районе седьмого-восьмого знака после точки. А поиск элемента по индексу / индекса по значению в коллекции на 10 тысяч оказался тоже весьма неоднозначным. import random lst = [*range(10000)] random.shuffle(lst) tpl = tuple(lst) indexes = [*range(10000)] random.shuffle(indexes) @halt def list_item_by_index(): for x in indexes: a = lst[x] @halt def list_index_of_item(): for x in indexes: a = lst.index(x) @halt def tuple_item_by_index(): for x in indexes: a = tpl[x] @halt def tuple_index_of_item(): for x in indexes: a = tpl.index(x) list_item_by_index(), list_index_of_item() tuple_item_by_index(), tuple_index_of_item() Результаты: list_item_by_index time: 00 h 00 min 0.00274250 s list_index_of_item time: 00 h 00 min 1.06715661 s tuple_item_by_index time: 00 h 00 min 0.00153810 s tuple_index_of_item time: 00 h 00 min 1.17664792 s Ну и создание кортежа командой tuple из генератора тоже медленнее, чем comprehension. А что там насчёт преимуществе кортежа по памяти? >>> tuple([*range(1000000)]).__sizeof__() 8000024 >>> [*range(1000000)].__sizeof__() 8000040 >>> Есть разница))) Но это надо создавать списки/кортежи длиной в 1-3 элемента, а числом в легионы, чтобы профит ощутить.
13:00 "однотипность"... Сразу вспоминается функция all, которая любую пустую коллекцию (во всём остальном Питоне это False и даже для "напарницы" этой функции any) и заодно пустую строку воспринимает как True. Знаете, почему? А потому что "если в комнате нет ни одного человека, то можно утверждать, что каждый человек из находящихся в комнате -- француз. Или женщина". Я не шучу ни грамма. Это известное логическое утверждение называется "парадокс остроумного француза" (The Paradox of the Clever Frenchman) или "парадокс одинокого француза" (The Paradox of the Lonely Frenchman). А потому что в Нидерландах хорошие наркотики, вот почему. 16:30 "список, его хэш-значение..." >>> s = [1, 2] >>> hash(s) Traceback (most recent call last): File "", line 1, in TypeError: unhashable type: 'list' Действительно.
@@andreykorolev8643 но кортеж как не был "лучше" списка, так и не стал. Как бы кто ни орал и сколько бы смайликов ни постил, "победитель", блин. Такая себе имитация собеседования с навязыванием ложной инфы.
Вот хороший собес, полезный для просмотра. Все объяснили, достаточно глубоко. Собесы с реальными джунами часто не дают хороших ответов на вопросы. Спасибо, полезно!
два профи пообщались) как это поможет джуну на реальном проекте? которому нужна в первую очередь уверенность, а не теория?
но такие видео ведут только на очередные ненужные курсы.
Почему на курсах не уточняют, что из следующих 10 параметров используют только 1-й, очень редко еще и 2-й. А остальными 8-му не нужно забивать свою оперативку в голове. Но ты зазубрил все 10, но не знаешь даже главной особенности того 1-го, с которым ты и будешь постоянно работать первые 3 года)).
Я думал парня на синьора собеседуют, а потом «ну когда найдешь свою первую работу..»
в поддержку канала ) надеемся на, то, что народ поддержит эту работу)
Таких бы видосов побольше.Тема собесов очень важна
Очень глубокий, качественный разговор.
Отличное видео, очень полезная информация и очень грамотно раскрыто, узнал для себя некоторые новые моменты)
Очень полезное интервью и разбор вопросов. Спасибо за такое развернутое видео! Продолжайте в таком же духе!
привет, привет. открыл видео на этом канале в первый раз и уже участник команды)))
Хороший собес! Респект ребятам, которые это делают, молодцы. Еще бы тайм коды на видео добавили - супер чудесно бы было. Сервис для перезентаций тоже понравился
Я офигел... В хорошем смысле слова. Это Тимур Гуев, сейчас прохожу для профиков) Первый раз его увидел и услышал. Пришлось фото загуглить, дыбы не лажануть с комментом. Интересная беседа.
Парни, я как раз сейчас прохожу ваш курс для новичков))
шикарное интервью, больше похоже на интересную дискуссию
Я не понял - кто кого собеседовал...
Наиграно
Они геи😊
Класс, обязательно посмотрю:)
Прошел три курса "Поколения Python" и привык к конкретным ответам, решая задачи. Точно такая задача про словарь из двух списков была у Пронина, я решил прям как на видео. А по итогу сказали надо расширять сознание, и если списки не равны нельзя терять данные. Необходимо при большем количестве ключей использовать например zip_longest. А если остались не используемые значения их например в отдельный список или в отдельный ключ.
в целом интервью очень приятное.
"рядовым программистам комплексные числа никогда не потребуются" -- но при этом пару минут убили на обсуждение... а в сумме на обсуждение float/decimal убили минут пять.
интервьюер сильно влюбился в слова "гомо/гетерогенный". к чему бы это )))
всегда поражает, как с одной стороны люди в матрице нули ищут, а с другой -- не знают, что такое "+=". и ещё более забавно, когда человек, писавший на с# говорит, что поведение "+=" неочевидно...
Два знакомых решили выступить каждый в своей роли 😅
Весь ролик ломал голову, что за МОСК (превед. удафф)-собеседование происходит. Потом дошло, что это они так mock транслителировали, молодцы...
контент хороший раньше не использовал decimal и не знал.
для последнего задачи оптимальнее было бы:
def foo(m):
c = 0
while m and m[0][0] == 0 and (l:=m.pop(0)):
l.append(1)
c += l.index(1)
return c
Классный контент, с удовольствием посмотрел. Многое из внутренностей питона для меня оказалось открытием, а задачку в конце я решил за секунды после ее озвучивания. Но я понимаю, что смотрю это спокойно на диване, а в реале мог бы и потеряться. Даже еще бы предложил метод пузырьковой сортировки для более быстрого обегания границы между нулями и единицами. Т.е. найти последний 0 в первой строке и последний 0 в последней строке, посчитать средний наклон спуска по диагонали... Но в 999 из 1000 случаев это на самом деле не нужно. Тем более питон это не про скорость.
Полезное видео. Спасибо!!!!
Классные у вас курсы ребят, именно благодаря ним и выучил питон
Рубрика огонь)) Больше подобных видосов Тимур)
Привет, понимаю что видео уже как год, но под описанием видео нет ссылки на ресурс посмотреть про +=?
Если можно было бы крайне интересно
Заранее спасибо
А почему не сказано про длинную логику/вычислений, что целые числа обладают неограниченной точностью…
Почему в исключениях не привели банальный пример: ctrl + c, было только сказано про ошибки вычислении чего-то
привет, а где страничка обещанная на 20:06 страничка?
Приветствую. Как называется плагин автозаполнения для Pycharm ? Стандартно он вроде не так работает.
Вот мое исполнение:
def count_zeros(arr: list):
if len(arr) == 1:
return arr[0].count(0)
if len(arr[0]) == 1:
return len(arr) - sum([x[0] for x in arr])
c = 0
for i in range(min(len(arr), len(arr[0]))):
if arr[i][i]:
break
c += 1
part1 = [row[:c] for row in arr[c:]]
part2 = [row[c:] for row in arr[:c]]
return c ** 2 + count_zeros(part1) + count_zeros(part2)
в матрицах в первом проходе можно и бинарным поиском найти) но это так, в порядке интереса
Из 21 минуты объяснение:
Просто попробуйте data[0] = data[0] написать в 3й строке. И все станет понятно. Питон не особо смотрит что вы там в кортеж по индексу присваиваите. Даже тот же самый элемент вызовет эксепшн. А строка data[0] = some + super + mega + expression конечно сначала начнет вычисляться с правой части
Tough guys. Really.
Задача с матрицей
Ментр сообщает, что можно работать с индексами
Тогда почему нельзя представить матрицу как typle
a = ((0, 0, 1, 1), (0, 0, 1, 1), (0, 1, 1, 1), (1, 1, 1, 1))
summ = 0
а для подсчета сделать так?
for i in a:
summ += i.index(1)
тут ведь так же сложность линеная
чувак, кажется ты гений
на сколько я знаю, сложность метода index() - O(n) в худшем случае, так как элемент с искомым индексом может быть в самом конце списка(кортежа) и в общем, в худшем случае, цикл for дает нам сложность O(n) и поиск индекса 1 нам тоже дает O(n). В сумме будет O(n2) ну или O(n * m) если матрица не квадратная.
Подскажите пожалуйста, сколько лет экзаменуемому и сколько времени он учился. Реально на уверенном, еще и приукрасить успевает, типа 10ка будет преследовать нас как хвост. Весело.
я постоянно складываю кортежи и суммирую кортеж, нахожу минимум, максимум. Я крайне редко пользуюсь списками. хватает корежа и генератора
Ого, вы теперь еще и собесы делаете - вообще респект.
А кто ведущий? Не шахматный ли человек-матрица, случаем? :D
P.S. А Эдуарду респект - сразу видно, что разбирается во внутрянке Питона. Зачет.
Не увидел ссылку, которую говорил, что кинешь на 21.15мин, или просто не нашел
Это точно на Джуна собес😮?
А где написано, что на джуна?)
@@Nina-hy4ql т.к. вопросы про азы, ну почти, и про фреймворки ничего не спросили, + задака на алогритмы не сложная, хотя, как уже сказано, это не собес)
2:47 в банковских системах обычно используют integer, и там нет такого понятия, как копейки и тому подобное
все верно. Оперируют в минимальных единицах валюты: копейки, центы, тенге. И никаких плавающих точек не нужно
join у str написан на плюсах? Вы уверены?
7:40 он реально сматерился?😮
Как я решил задачу с матрицей:
def count_zeros(m):
c = 0
i = len(a[0])
for x in a:
i = x[0:i].count(0)
c += i
return c
В каждой строке количество нулей (которые только в начале) не больше, чем в предыдущей, таким образом, мы постепенно будем проверять все меньшую и меньшую часть (срез) строки, так как всю строку проверять смысла нет.
Я не сделал никаких проверок на единицу в цикле, так как(по моему мнению) сами эти проверки отнимают время.
Подскажите, какую скорость имеет данный алгоритм?
Это вообще работать не будет, поскольку "а" не определено. Ну и сложность О(n**2), потому что в цикле for на каждой итерации count, что тоже является циклом. Итого, цикл в цикле.
А где ссылка на статью про +=?
видимо перенервничал Эдуард, на последнюю задачку можно было так же легко сделать с ходу используя индексы))) sum(row.index(1) for row in matrix)
я вот тоже смотрел - и подумал, что его потуги решить ту задачу как-то не гармонируют с тем, что он показал ранее)
А еще подумал что то, что они отсортированы по вертикали н6е имеет значения.
Сложность этого решения - O(n^2) в худшем случае
такое решение подойдет для последней задачи?
def count_zeros(n):
c = 0
for i in n:
for j in i:
if j == 1:
break
else:
c += 1
return c
Тоже так подумал сразу
def foo(matrix):
return len([i for sublist in matrix for i in sublist if i == 1] )
шедевро питон
Не совсем понял чем не угодил проход циклами по всем строкам матрицы для выявления всех нулей. Сколько раз я уже видел такое, да код красивый, но черт ногу сломит в логике, вместо того что бы написать на 2 строки больше но зато все понятно как в азбуке. Никогда не понимал этого.
потому что суть задачек на алгоритмы не в том чтобы проверить как код в проде ты будешь писать, а именно что проверить смекалку, навыки именно в алгосах и структурах данных
@@rednil8242 Так а это чем не алгоритм с циклом то? я помню когда начинал учить питон столько велосипедов ненужных , работающих, но соверншенно ненужных, поизобретал что боольше чет и не хочется.
@@Anshegar тем что до него додумываться почти что не надо
задачка и так изи-медиум, смысл не показать что кандидат просто цикл умеет писать, но в том что догадается до оптимального решения. буквально вчера с этим на собесе столкнулся, с квадратичной сложности до линейной оптимизировал.
Самое печальное в этом всем то, что на реальной работе знания 90% этих вопросов если и понадобятся, то один раз в жизни. А углубленная информация скорее всего не понадобится никогда. Но чтоб пройти собеседование знать это надо и чем глубже тем лучше.
Про finally и отключение э-ва. Скорость света 300000 км/с. Или 300 км за 1 мс (милисекунду) - Если, допустим, электростанция находится от нас в 3000 км и на ней произошла авария, то свет у нас погаснет только через 10 мс. И если наш код выполняется быстрее, чем 10 мс - то finally имеет шансы быть выполненным.
Почему слишком лёгкие вопросы?
Нужно найти количество нулей в матрице - простой проход по матрице будет выполняться за O(n). Где тут квадратичная сложность?
С листами и кортежами слишком оверлоад. Не правильно так делать. Это лишь две "почти одинаковые структуры данных" Динамические масив для листа и статический для кортежа. И от туда уже выходит их юз кейс. Человек ответил что итерация через кортеж быстрее что не являеться правдой. ВО первых бенчмарк написать 30 секунд и посмотреть что они одинаковые и даже чаще выигрывает лист(но это зависит от рантайма). Второе чисто знать их структуру что тоже дает ответ что в инетрации как и аксесе нету быстрее или медленее. Пустую аллокацию лист не итерирует.
О хэш таблице. Человек рассказал о старом представлении хэш таблиц в пайтоне. + не рассказано о пробации\колизия\решению кол и тд. Тема очень глубокая. И если уже упоминать у то что знаешь глубь то или рассказывать детально или вообще не рассказывать а то порождает только непонимание.
если сейчас такие джуны, то я сочувствую тем кто пытается войти в айти) чувак тянет на мидл + пятилетней давности
Хоть кто-то пожалел, спасибо)
К собеседованию ни какого отношения не имеет. Ни один, ни второй не программисты.
всмысле?
Всегда же надо какую-то ерунду написать 🤣
Что за бред вообще? Обиделся, потому что не смог бы сам ответить на те же вопросы?
так че, Эдуард нашел работу ???
Помимо лайка, добавлю комментарий)
39:52 Проверил в VS code, вывело это:
[10, 'a']
[123]
[10, 'a']
Собственно, получается Тимур неправильно сказал, что в первом выводе будет только 10. Или в чем проблема?
Гений, смотри хотя-бы когда копируешь код, операции уже произошли и ты выводишь грубо говоря 2 списка, а не 3.
Хоть return и возвращает список, но функция на него продолжает ссылаться и в итоге в 3 её вызове список увеличивается и в list1 также.
@@A.AA.A-qo6tw так задача стоит что выведет код, и вывело собственно, то что я написал. А не то что сначала выведет первый принт, второй и третий, и почему так произошло, если вывести сразу все.
@@kostechkaS думаю, что суть данного вопроса состояло не тупо ответить, что выведет, а именно механизм работы в данном случае.
🤟
27:40 какая компеляция? он о чем? питон интерпритируемый, там все во время выполнения делается
А что у нас хранится в папке pycache?)
хороший собес
еееееееееееееееееееееееее!!!!!!!!!!!!
def count_zeros(matrix):
return sum(i.index(1) if 1 in i else len(i) for i in matrix)
Постановка
Почему?
моковое интервью же
def count_zeros(mat):
zeroes = 0
for i in range(len(mat)):
for j in range(len(mat[i])):
if mat[i][j] == 0:
zeroes += 1
else:
break
return zeroes
так красивее , нет ?
так квадратичная сложность
картежИ, без кортежЕй )) аж слух режет.
Рассказано все классно, но чувствуется что это одна зубрежка
А как иначе?)
Нафига думать если есть консоль, с такими работодателями даже не общаюсь.
Во-первых, это не нанимаете на работу, а MOCK собеседование. Во-вторых, если вы не знаете, что происходит под капотом, то в некоторых ситуациях консоль вам не поможет решить проблему. И знать как всё устроенно внутри, куда полезнее, чем бездумно писать код.
@@A.AA.A-qo6tw я всегда смотрю консоль и в 100% всегда решаю сложные задачи. В любом другом случае все уже решено и нужно искать ответ в интернете. Либо читать документацию.
шарлотан
никогла не понимал, зачем на инженерном языке решать алгозадачи, вам java мозги жмёт?
кортЕжи
ЭлсЭ, прям коробит от этого косноязычия!! Else [els] Откройте словарь, все названия идут из английского. ну реально невозможно это слушать
Это не урок по английскому, чтобы придераться к произношению. Да, английский полезная вещь, но всё же, имейте терпение и уважение к чужому труду.
Ребята, ну выучите, наконец, как правильно произносить else и прочие английские слова! Так режет ухо, что хочется спросить кто вас так научил? Или сами решили за англичан так произносить? А самое страшное, что свою неграмотность вы ещё и мультиплицируете!
Очередное тупое собеседование.
Важны не знания основ, а мышление программиста.
Выучить язык при необходимости ума большого не надо, а вот интеллект важен всегда.
Короче, очередной эйчаровский тупизм.
как без знания тонкостей языка писать эффективный код?
И прямо со старта...
>>> import decimal
>>> a = decimal.Decimal(0.3)
>>> b = decimal.Decimal(0.1)
>>> a + a + a + b
Decimal('0.9999999999999999722444243843')
>>>
>>> 0.3 + 0.3 + 0.3 + 0.1
0.9999999999999999
>>>
Разницы в результате тупо нет, те же самые 16 девяток после точки, а потом неестественный хвост как бы приклеен. Ну, раз кому-то неправильный результат с колбасой в 28 знаков милее -- дело хозяйское. В данном случае "точность" означает "подробность", но никак не "правильность". Что в регистрах, что в ячейках оперативки одна и та же двоичная система, иначе и быть не может. Так что если считать десятичные дроби, нужен не компьютер, а калькулятор.
И кортеж со списком длиной даже в миллион -- при линейном чтении разница в районе седьмого-восьмого знака после точки. А поиск элемента по индексу / индекса по значению в коллекции на 10 тысяч оказался тоже весьма неоднозначным.
import random
lst = [*range(10000)]
random.shuffle(lst)
tpl = tuple(lst)
indexes = [*range(10000)]
random.shuffle(indexes)
@halt
def list_item_by_index():
for x in indexes:
a = lst[x]
@halt
def list_index_of_item():
for x in indexes:
a = lst.index(x)
@halt
def tuple_item_by_index():
for x in indexes:
a = tpl[x]
@halt
def tuple_index_of_item():
for x in indexes:
a = tpl.index(x)
list_item_by_index(), list_index_of_item()
tuple_item_by_index(), tuple_index_of_item()
Результаты:
list_item_by_index time:
00 h 00 min 0.00274250 s
list_index_of_item time:
00 h 00 min 1.06715661 s
tuple_item_by_index time:
00 h 00 min 0.00153810 s
tuple_index_of_item time:
00 h 00 min 1.17664792 s
Ну и создание кортежа командой tuple из генератора тоже медленнее, чем comprehension. А что там насчёт преимуществе кортежа по памяти?
>>> tuple([*range(1000000)]).__sizeof__()
8000024
>>> [*range(1000000)].__sizeof__()
8000040
>>>
Есть разница))) Но это надо создавать списки/кортежи длиной в 1-3 элемента, а числом в легионы, чтобы профит ощутить.
13:00 "однотипность"... Сразу вспоминается функция all, которая любую пустую коллекцию (во всём остальном Питоне это False и даже для "напарницы" этой функции any) и заодно пустую строку воспринимает как True. Знаете, почему? А потому что "если в комнате нет ни одного человека, то можно утверждать, что каждый человек из находящихся в комнате -- француз. Или женщина". Я не шучу ни грамма. Это известное логическое утверждение называется "парадокс остроумного француза" (The Paradox of the Clever Frenchman) или "парадокс одинокого француза" (The Paradox of the Lonely Frenchman). А потому что в Нидерландах хорошие наркотики, вот почему.
16:30 "список, его хэш-значение..."
>>> s = [1, 2]
>>> hash(s)
Traceback (most recent call last):
File "", line 1, in
TypeError: unhashable type: 'list'
Действительно.
Потому что в дисимал нужно передавать числа в виде строки, вот ты разорался 😂😂😂
Передай "0.3" в десимал и будет тебе счастье
@@andreykorolev8643 но кортеж как не был "лучше" списка, так и не стал. Как бы кто ни орал и сколько бы смайликов ни постил, "победитель", блин. Такая себе имитация собеседования с навязыванием ложной инфы.