• Стоит ли читать лутца в 2023?

    sergey-gornostaev
    @sergey-gornostaev
    Седой и строгий
    Лучше Лутца ещё ничего не написали. Да и Python за годы с последнего издания сильно не поменялся.
    Ответ написан
    Комментировать
  • Как правильно спланировать обучение?

    ThunderCat
    @ThunderCat
    {PHP, MySql, HTML, JS, CSS} developer
    Если есть именно желание изучать - ты уже на полкорпуса впереди остальных.
    требования к джунам выросли, кол-во откликов от чуваков, прошедших трёхмесячные курсы скиллбокса, просто зашкаливает.
    Так и рынок взрослеет, раньше программирование было сродни шаманству, в институте учили азам, из учебников - документация, хорошо если на английском, а дальше старшие товарищи тебе объясняли как работает эта большая черная штука с зеленым монитором. Сейчас сфера как раз в том состоянии когда работы много, местами очень много, а работников с уровнем "сел и работает" кот наплакал, а джунов больше учить надо, чем ждать с них профита, так как обучаемость вещь ограниченная, ну и кроме того теперь вместо одной большой черной штуки их целый зоопарк, каждая контора молится на свой большой и черный набор технологий... То есть самый выгодный сотрудник - мифический "твердый мид", уже умеет делать что говорят, но стоит все еще не как сеньор.

    По этому рынок ищет джунов со скилами мида, ищет активно и не всегда безуспешно. Опыт собственных проектов сложнее верстки в 3 колонки и 3 скриптов, установленных с гита, играет в серьезный плюс.

    Из ваших скилов вам сильно не хватает как фронту одного-двух фреймворков, без которых сегодня уже никто никуда не едет в 90% случаев, соответственно учим в порядке популярности vue/react/angular, хотя бы 1 из уже будет серьезной заявкой на победу, тайпскрипт соответственно тоже.

    надеюсь что к моменту моего 3-4 курса (2026-2027) ситуацию с наймом как минимум не усугубится
    Ситуация будет усугубляться с каждым годом, в плане того что спецов так быстро готовить просто не реально, по крайней мере массово, по этому дефицит кадров будет только расти.

    Conclusio: Если вы не прекращаете учиться и каждый день посвящаете некоторое время разработке, то вы неизбежно найдете нормальную работу, смиритесь...
    Ответ написан
  • Как посчитать повторяющиеся данные в списке?

    sergey-gornostaev
    @sergey-gornostaev Куратор тега Python
    Седой и строгий
    Цикл
    Ответ написан
    Комментировать
  • Как сравнить значения списка и словаря Python?

    0xD34F
    @0xD34F
    Вместо

    for name, cost in cost_before.items():
        for i in cost_now:

    пусть будет

    for i, (name, cost) in zip(cost_now, cost_before.items()):
    Ответ написан
    Комментировать
  • Добавить элемент в список списков?

    0xD34F
    @0xD34F
    newArr = [ [ n[0].split('_')[1], *n ] for n in arr ]
    Ответ написан
    Комментировать
  • Где искать работу Junior'ом?

    DevMan
    @DevMan
    давайте я вам открою маленький секрет: под лежачий камень вода не течет.

    если вы будете искать вакансию, идеально соответствующую вашему представлению, вы рискуете (и очень сильно) остаться вообще без работы.
    большинство публикуемых вакансий имеют либо вообще мало общего с потребностями работодателя (их составляли недоумки из местного кадрового отдела), либо они из разряда "хотели бы видеть", а не "маст хэв".
    поэтому прост долбитесь во все двери если хоть минимально уверены, что сможете удовлетворить хоть часть из озвученных хотелок.
    многие вас отошьют. но есть весьма неиллюзорный шанс, что вы зацепитесь.
    в любом случае, такой способ гораздо продуктивнее вопроса тут.

    в моей карьере есть три места работы, куда я попал вообще без открытых у них вакансий. прост пришел к ним и сказал: "я вот такой классный, хочу работать у вас". они конеш охренели, но через месяц и несколько собеседований я уже был у них в штате.

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

    однако, есть два момента, которые нужно знать и понимать:
    1. джун - это УЖЕ специалист, хоть и неопытный. а не неумеха.
    2. всегда будет какой-то зумингер, который всё обосрет.
    Ответ написан
    7 комментариев
  • Актуальная литература по Python?

    sergey-gornostaev
    @sergey-gornostaev Куратор тега Python
    Седой и строгий
    "Изучаем Python" Лутца и "Python к вершинам мастерства" Ромальо.
    Ответ написан
    1 комментарий
  • Как преобразовать словарь в список с объединением по полю?

    adugin
    @adugin Куратор тега Python
    from itertools import groupby
    from operator import itemgetter
    
    data = [
        {'group': 'style', 'name': 'Классика'},
        {'group': 'style', 'name': 'Модерн'},
        {'group': 'type', 'name': '2-х комнатная квартира'}
    ]
    
    ig = itemgetter('group')
    
    result = [list(group) for key, group in groupby(sorted(data, key=ig), ig)]

    from collections import defaultdict
    
    data = [
        {'group': 'style', 'name': 'Классика'},
        {'group': 'style', 'name': 'Модерн'},
        {'group': 'type', 'name': '2-х комнатная квартира'}
    ]
    
    result = defaultdict(list)
    
    for item in data:
        result[item['group']].append(item)
    
    result = list(result.values())
    Ответ написан
    1 комментарий
  • Как написать программу, выводящую следующий список: ['a', 'bb', 'ccc', 'dddd', 'eeeee', 'ffffff', ...]?

    leahch
    @leahch
    3D специалист. Dолго, Dорого, Dерьмово.
    Ну и я уж :-)
    import string
    print([c*i for i,c in enumerate(string.ascii_lowercase,1)])

    ['a', 'bb', 'ccc', 'dddd', 'eeeee', 'ffffff', 'ggggggg', 'hhhhhhhh', 'iiiiiiiii', 'jjjjjjjjjj', 'kkkkkkkkkkk', 'llllllllllll', 'mmmmmmmmmmmmm', 'nnnnnnnnnnnnnn', 'ooooooooooooooo', 'pppppppppppppppp', 'qqqqqqqqqqqqqqqqq', 'rrrrrrrrrrrrrrrrrr', 'sssssssssssssssssss', 'tttttttttttttttttttt', 'uuuuuuuuuuuuuuuuuuuuu', 'vvvvvvvvvvvvvvvvvvvvvv', 'wwwwwwwwwwwwwwwwwwwwwww', 'xxxxxxxxxxxxxxxxxxxxxxxx', 'yyyyyyyyyyyyyyyyyyyyyyyyy', 'zzzzzzzzzzzzzzzzzzzzzzzzzz']
    Ответ написан
    4 комментария
  • Резюме в .doc или .pdf?

    DevMan
    @DevMan
    pdf. ибо посмотреть можно везде.
    Ответ написан
    Комментировать
  • Почему словарь внутри функции ведет себя как глобальная переменная?

    sergey-gornostaev
    @sergey-gornostaev Куратор тега Python
    Седой и строгий
    Марк Лутц - "Изучаем Python", глава 17 «Области видимости и вложенные функции» и раздел «Типичные ошибки при работе с функциями» в конце.

    Значения по умолчанию для аргументов функции вычисляются и
    запоминаются в момент выполнения инструкции def, а не при вызове
    функции. Внутренняя реализация Python сохраняет по одному объекту для
    каждого аргумента со значением по умолчанию, присоединенного к
    функции.

    Например, следующая функция использует пустой список в качестве
    значения по умолчанию своего аргумента, а затем изменяет его при
    каждом вызове:

    >>> def saver(x=[]): # Объект списка сохраняется
        ...     x.append(1)  # При каждом вызове изменяется один и тот же объект!
        ...     print(x)
        ...
        >>> saver([2]) # Значение по умолчанию не используется
        [2, 1]
        >>> saver()    # Используется значение по умолчанию
        [1]
        >>> saver()    # Список растет при каждом вызове!
        [1, 1]
        >>> saver()
        [1, 1, 1]


    Если такое поведение является неприемлемым, можно просто создавать
    копию аргумента по умолчанию в начале тела функции или переместить
    выражение, возвращающее значение по умолчанию, в тело функции.
    Поскольку в этом случае значение по умолчанию будет находиться в
    программном коде, который выполняется при каждом вызове функции, вы
    всякий раз будете получать новый объект:

    >>> def saver(x=None):
        ...     if x is None: # Аргумент отсутствует?
        ...         x = []    # Создать новый список
        ...     x.append(1)   # Изменить объект списка
        ...     print(x)
        ...
        >>> saver([2])
        [2, 1]
        >>> saver() # Список больше не растет
        [1]
        >>> saver()
        [1]
    Ответ написан
  • Как отформатировать матрицу в Python 3?

    LazyTalent
    @LazyTalent
    Data Engineer, Freelancer
    timetable = [i[1:2] + i[3:] for i in timetable]
    Ответ написан
    1 комментарий
  • Как можно отсортировать по "index"?

    fox_12
    @fox_12 Куратор тега Python
    Расставляю биты, управляю заряженными частицами
    sorted(staff, key=lambda x: x['index'], reverse=False)
    Ответ написан
    2 комментария
  • В чем закономерность?

    @kandrash
    Кратко о себе
    Чётное
    Нечётное
    Однозначное
    Двузначное
    Нечётное
    Ну это то что первое в голову пришло, я пока до второго не доучился, программу подготовки к первому осваиваю)
    Ответ написан
    8 комментариев
  • Можно ли провести for i in range() без i?

    adugin
    @adugin Куратор тега Python
    Ненужные переменные в Python принято обозначать знаком подчёркивания _ (underscore):
    for _ in range(...):
        ...
    Ответ написан
    Комментировать
  • Как вывести слово с большим количеством символов?

    @o5a
    Можно напрямую использовать max, передав ей в качестве сравнивающей функции len (которая возвращает длину строки). Таким образом она найдет строку с максимальной длиной.

    a = ['qwe', 'q', 'arqw', 'bbbwewe']
    print(max(a, key=len))
    # bbbwewe
    Ответ написан
    Комментировать
  • Алгоритм пропуска числа?

    @zexer
    n = 19
    numbers_as_string = '16 11 5 7 15 18 6 13 9 10 14 12 2 19 4 17 3'
    numbers = [int(i) for i in numbers_as_string.split(' ')]
    
    all_numbers = set(range(1, n + 1))
    numbers = set(numbers)
    sorted_diff = [str(i) for i in sorted(all_numbers.difference(numbers))]
    print(' '.join(sorted_diff))
    Ответ написан
    3 комментария
  • Нужно ли стажеру/джуну знать и/или использовать в Python аннотации типов?

    mkone112, поделюсь своими соображениями.
    Более года пишу на Python3 и недавно в докладе bobuk (в коде) увидел аннотацию типов. Загорелся и стал её использовать. Но, спустя время, понял, что для меня аннотация сильно загромождает код и никак не облегчает работу с ним. Перестал везде "пихать" аннотацию.
    Мои личные выводы:

    I. Сильно страдает читаемость.
    Аннотация не сделает код лучше, это не панацея. Я просто учу язык и программирую. Пробую всякие штуки, что-то входит в повседневную практику, а что-то отваливается (как грязь на одежде, высохла и сама отвалилась).

    II. Допускаю, что в дальнейшем аннотация может пригодиться.
    1. Бывает так, что ты открываешь свой код через полгода и ... глаза кровоточат. Что это? Зачем это? Тут кому-то может помочь аннотация типов. Лично мне помогает правильное наименование переменных, структур и функций. Например, при написании кода всегда к имени функции можно добавить func_, к имени списка - l или list и т.д.
    2. Ещё есть предположение, что аннотация используется в процессе тестирования. Сейчас мне это видится так - весь код (весь проект) оборачивается в некую библиотеку (pytest) и перед продакшеном тестируется на ошибки. Вот тут срабатывает магия и помогает аннотация типов. Но пока это только мои размышления, так как я НОЛЬ в тестировании.
    3. Пока я ещё не погрузился в ООП, только собираюсь изучать. Но местами в коде видел, что при разработке класса используется аннотация. Мне показалось, там она прямо на своём месте, очень удобно.

    В целом для себя я:
    - понял как она работает,
    - поверхностно изучил синтаксис,
    - в своём коде пока не использую,
    - зато теперь, когда вижу код с аннотацией типов, не пугаюсь и понимаю - ага вот здесь аннотация
    - как только пойму в каких местах она нужна, сразу стану её использовать
    Ответ написан
    1 комментарий
  • Нужно ли стажеру/джуну знать и/или использовать в Python аннотации типов?

    sergey-gornostaev
    @sergey-gornostaev Куратор тега Python
    Седой и строгий
    Пятнадцать лет пишу на Python. Писал на нём очень масштабные проекты. При этом никогда не использовал и не собираюсь использовать аннотации типов. Считаю, что если хочется указывать типы, стоит использовать статически типизированный язык.
    Ответ написан
  • Как вывести значение первого словаря с помощью второго словаря?

    ВЫ как-то перемудрили все, можно же просто
    sells={
    ...   "Маша":"Samsung 20",
    ...   "Максим":"Iphone 6S",
    ...   "Наташа":"Lenovo Legion"
    ... }
    prices={
    ...   "Samsung 20": 300,
    ...   "Iphone 6S": 260,
    ...   "Lenovo Legion": 450
    ... }
    result = [name for name, tel in sells.items() if prices.get(tel, 999) < 350]
    >>> print(result)
    ['Маша', 'Максим']
    Ответ написан
    8 комментариев