приятный парень, особенно на фоне кандидатов из предыдущих видео по скиллу.
@userGerostoos6 күн бұрын
Иван молодец, так держать!
@Hope-h7x19 күн бұрын
Убила фраза ‘не дай бог, читать ’ )
@TOPTIER-un3dp19 күн бұрын
50:23 надо минимальную разницу от среднего значения брать. Выяснить индекс минимального значения и удалить из списка ФИО по индексу. А так, я бы через словари реализовал. Но я бы также переволновался и тупил😅 Мишутка, 2й месяц изучения пайтона с нуля ;)
@7IdE19 күн бұрын
Ооо, древнее зло пробудилось и начало видосики заливать! :D P.S. Харош болеть уже.
@AllBlackMSK20 күн бұрын
Блен, я бы с радостью тоже на собес залетел, чисто знания затестить, но по воле случая подарил такую возможность коллеге по цеху(
@MaximShaybakov15 күн бұрын
Как попасть к вам на собеседование?
@Vjqifg18 күн бұрын
Сам подход неправильный. Надо отсортировать список по длине фамилий и убрать средний элемент списка.
@capstanfearless18 күн бұрын
Бинго!
@evgenysdrv88718 күн бұрын
На сколько я понял, что речь про количество букв в фамилии, а если будет, например, в отсортированном списке [5, 5, 6, 7, 8, 11](речь про количество букв в фамилии), то средний элемент по количеству букв это 8, а в середине списка 6 или 7, то ответ будет не правильным или нет? Как я понимаю, задача на то как человек будет подходить к задаче и как он думает какие уточняющие вопросы задает и т.д.
@Dim7888814 күн бұрын
а если 2 или больше с одинаковрй длийнной? или четное колличество записей? У вас получается медианное значение, а у участника среднее арифметическое.
@Vjqifg13 күн бұрын
@@Dim78888 Так медианное важнее. А если будет одна фамилия их двух букв(Ли) и 20 фамилий из 10 букв?
@Dim7888813 күн бұрын
@@Vjqifg 🙂 они для разного существуют и оба важны. В условии задания среднее значение, а не медианное.
@XbyM20 күн бұрын
А собесы проходят только для тех кто из яндекса?
@imadna581019 күн бұрын
yep, плебсы только наблюдают
@meyo39920 күн бұрын
Спасибо за видео. Но я не понял. Это реальное интервью? Я так понимаю, что этих знаний не достаточно, для получение работы. В тестовых заданиях ведь не только python, но и Django , docker и прочее.
@RomanAndr20 күн бұрын
@@meyo399 mock интервью, не настоящее
@MrBeltalowda20 күн бұрын
ну за час физически невозможно выяснить что знает джун из всего, что он должен знать, но представление об уровне знаний можно получить
@meyo39920 күн бұрын
@@MrBeltalowda я это понимаю. Я по другое. Почекай вакансии там нигде не написано, что знание питона. Везде связка с Django и подобными библиотеками. Это ещё нужно выучить Джанго, HTML, CSS, базы данных и прочее.
@gucci126019 күн бұрын
Django , docker и прочее это инструменты , сегодня Django завтра что то другое , а пайтон это база , без него ты этими инструментами пользоваться не сможешь
@imadna581019 күн бұрын
@@gucci1260 народ не выкупает, что тот же джанго, это по сути кастомый набор классов наспанных на питоне
@itarea252220 күн бұрын
def delete_one_avg_len_fio(list_fio: list) -> list: ''' Удалить из списка фио наиболее близкое к середине (только одну, по длине символов) ''' list_count_words = list(map(lambda x: len(x.split()[0]), list_fio)) sr_count = (max(list_count_words) + min(list_count_words)) / 2 key_word = 0 find_word = max(list_count_words) for key, value in enumerate(list_count_words): if value == sr_count: key_word = key break if max(list_count_words) > value > min(list_count_words) and abs(value - sr_count) < find_word: find_word = abs(value - sr_count) key_word = key list_fio.pop(key_word) return list_fio
@itarea252220 күн бұрын
Не ругайтесь сильно!
@ivanhom9419 күн бұрын
Подопытный Иван всё-таки решил эту задачу таким образом: from typing import List fio = """Иванов И. И. Смирнович П. П. Ким Ю. Л.""" fio_list = [fio for fio in sorted(fio.split(' ')) if fio] def remove_avg_surname(fio_lst: List[str]) -> List[str]: """Удаление ФИО из списка, длина фамилии которого близка к среднему значению длин фамилий остальных ФИО. """ if not fio_lst or type(fio_lst) is not list: return [] # Считаем длину каждой фамилии в списке ФИО surnames_len = [(len(fio.split()[0]), fio) for fio in fio_lst] # Находим среднюю длину фамилий avg_len = sum(map(lambda x: x[0], surnames_len)) // len(surnames_len) # Находим отклонение длины каждой фамилии от средней длины deltas = [(abs(avg_len - surn[0]), surn[1]) for surn in surnames_len] # Получаем самую первую фамилию с минимальным отклонением avg_surname = sorted(deltas, key=lambda x: x[0])[0][1] # Удаляем ФИО из исходного списка fio_lst.remove(avg_surname) return fio_lst
@ivanhom9419 күн бұрын
И тесты для проверки: assert remove_avg_surname([]) == [] assert remove_avg_surname('не список') == [] assert remove_avg_surname(['Чапаев В. И.']) == [] assert remove_avg_surname( ['Ивановов И. И.', 'Смирнович П. П.', 'Ким Ю. Л.'] ) == ['Смирнович П. П.', 'Ким Ю. Л.'] assert remove_avg_surname( ['Смирнович П. П.', 'Ким Ю. Л.', 'Велес И. И.'] ) == ['Смирнович П. П.', 'Ким Ю. Л.'] assert remove_avg_surname( ['Смирнович П. П.', 'Кимченко Ю. Л.', 'Велес И. И.'] ) == ['Смирнович П. П.', 'Велес И. И.'] assert remove_avg_surname( ['Кимченко Ю. Л.', 'Велес И. И.'] ) == ['Кимченко Ю. Л.'] assert remove_avg_surname( ['Биба Ю. Л.', 'Боба И. И.'] ) == ['Боба И. И.'] assert remove_avg_surname( ['Боба И. И.', 'Биба Ю. Л.'] ) == ['Биба Ю. Л.'] assert remove_avg_surname( ['Боба Я. И.', 'Боба Ю. Л.'] ) == ['Боба Ю. Л.'] assert remove_avg_surname( ['Шу И. И.', 'Шуб Ю. Л.', 'Шуба Ю. Л.', 'Шубад Ю. Л.', 'Шубадубадубаев Ю. Л.'] ) == ['Шу И. И.', 'Шуб Ю. Л.', 'Шуба Ю. Л.', 'Шубадубадубаев Ю. Л.'] assert remove_avg_surname( ['Шу И. И.', 'Шубадубадубаев Ю. Л.'] ) == ['Шубадубадубаев Ю. Л.']
@morzellen19 күн бұрын
''' Надо убрать переносы строк в списке полных имён, отсортировать список полных имён по алфавиту и написать функцию, которая должна удалять из изначального массива отсортированных полных имён то полное имя, длина фамилии которого равна или близка к значению средней длины всех фамилий в ней. ''' fullname_list = '''Бабинець Ринат Германович Жебраков Иван Максимович Муханкин Виталий Вадимович Перфирьев Руслан Константинович Табачник Ян Ефимович Тинаев Виталий Викторович Цизин Ринат Валентинович Черемисинов Михаил Денисович''' sorted_fullname_list = sorted(fullname_list.split(' ')) def process_sorted_fullname_list(sorted_fullname_list: list[str]) -> list[str]: surnames = [sorted_fullname.split()[0] for sorted_fullname in sorted_fullname_list] surnames_lengths = [len(surname) for surname in surnames] average_surnames_lengths = round(sum(surnames_lengths) / len(surnames_lengths)) differences = [abs(len(surname) - average_surnames_lengths) for surname in surnames] min_difference = min(differences) return [fullname for fullname, difference in zip(sorted_fullname_list, differences) if difference != min_difference] def process_sorted_fullname_list_2(sorted_fullname_list: list[str]) -> list[str]: surnames_lengths = [] differences = [] for sorted_fullname in sorted_fullname_list: surnames_lengths.append(len(sorted_fullname.split()[0])) average_surnames_lengths = round(sum(surnames_lengths) / len(surnames_lengths)) differences.append(abs(len(sorted_fullname.split()[0]) - average_surnames_lengths)) return [fullname for fullname, difference in zip(sorted_fullname_list, differences) if difference != min(differences)] print(process_sorted_fullname_list(sorted_fullname_list)) print(process_sorted_fullname_list_2(sorted_fullname_list)) У меня возникла дилемма: Первая функция проигрывает по памяти, но выигрывает по скорости. Вторая функция проигрывает по скорости, но выигрывает по памяти. Какая функция более эффективная и почему? Сам склоняюсь к первой.
@РамисСабирзянов-ъ4г19 күн бұрын
Классное решение! 2 ое не разглядывал, но 1ая функция у вас удалит сразу двоих. Как я понял из дачи, нужно кого-то одного.
@gucci126020 күн бұрын
text = '''Бабинець Ринат Германович Жебраков Иван Максимович Муханкин Виталий Вадимович Перфирьев Руслан Константинович Табачник Ян Ефимович Тинаев Виталий Викторович Цизин Ринат Валентинович Черемисинов Михаил Денисович''' def func(txt): txt = txt.split(' ') txt = sorted(txt, key=lambda x: len(x.split()[0])) return [x for x in txt if txt.index(x) != len(txt)//2] вроде работает p.s Курсы не проходил , учусь из интернета пару месяцев. Не судите строго
@gucci126020 күн бұрын
а ну если тоже Бибенца удалять то вот так if txt.index(x) != len(txt) // 4
@МихаилКасаткин-р6д20 күн бұрын
Это не нужно: [x for x in txt if txt.index(x) != len(txt)//2] Проще исключить по индексу через pop(len(txt)//2)
@ivanhom9420 күн бұрын
Решение не является правильным. Ниже объясняю пример. print(func('Шу И. И. Шуб Ю. Л. Шуба Ю. Л. Шубад Ю. Л. Шубадубадубаев Ю. Л.')) Здесь у нас пять фамилий. Средняя длина этих пяти фамилий равна 5, т.к. ((2+3+4+5+14) // 5) == 5 Следовательно, мы должны удалить фамилию "Шубад", которая ближе всего к среднему значению длин всех фамилий. Но по логике твоего алгоритма, мы удалим человека с фамилией "Шуба"
@gucci126019 күн бұрын
@@ivanhom94 def func(txt): txt = txt.split(' ') txt = sorted(txt, key=lambda x: len(x.split()[0])) average = sum([len(x) for x in txt]) // len(txt) return [x for x in txt if len(x) != average] получается что так?
@gucci126019 күн бұрын
C проверкой def func(txt): if not txt: return [] txt = txt.split(' ') average = sum(len(x) for x in txt) // len(txt) return [x for x in sorted(txt, key=lambda x: len(x.split()[0])) if len(x) != average]
@nvig663620 күн бұрын
def filter_out_average_length_names(text: str) -> List[str]: full_names = text.split(" ") last_names = [name.split()[0] for name in full_names] average_length = sum([len(last_name) for last_name in last_names]) / len(last_names) min_diff = min([abs(len(last_name) - average_length) for last_name in last_names]) last_names = [last_name for last_name in last_names if abs(len(last_name) - average_length) > min_diff] return [name for name in full_names if name.split()[0] in last_names]
@ivanhom9420 күн бұрын
Почти правильно. Проверь теперь что выведет: print(filter_out_average_length_names('Боба И. И. Биба Ю. Л.')) print(filter_out_average_length_names(''))