• На чем лучше написать десктопное приложение под устройство на Arduino?

    trapwalker
    @trapwalker
    Adik Izat, читайте внимательнее документацию:
    https://www.electronjs.org/docs/tutorial/applicati...
    Неужели вы думаете, что первый, перед кем встала подобная задача?
  • Как в функции __str__ модели в Django делать return в виде списка?

    trapwalker
    @trapwalker
    beginer0, используйте форматирование
    f'{datetime.datetime.now():%Y-%m-%d %H:%M}'
  • Как посчитать суммы в списке словарей?

    trapwalker
    @trapwalker Куратор тега Python
    Но вы же сами достаточно категорично написали на счет людей, которые стройными рядами ходят в церковь. Их всех под одну гребенку записали в мракобесы.

    pcdesign, именно! Я считаю. что мне тоже следует более критически мыслить, убирать лишние предрассудки, менее предвзято смотреть на мир, становиться еще более эрудированным человеком.

    Ну и да, я же риторически гиперболизировал аллегорию, чтобы она стала более яркой и доходчивой.
    Конечно ряды не так уж и стройны, а расписание мракобесных телепередач куда разнообразнее. Не все, кто ходит в церковь - антипрививочники, а гомеопаты, порой, совсем не набожны. Тут всё так понамешано...
  • Как создать сайт, чтобы в нем можно было программировать на python?

    trapwalker
    @trapwalker Куратор тега Python
    Dr. Bacon, не, ну может это особая форма серверного суицида такая. Или он бэкдор делает нерадивому работодателю перед увольнением
  • Как посчитать суммы в списке словарей?

    trapwalker
    @trapwalker Куратор тега Python
    pfemidi, "изначально задалбливать" - это формировать кругозор, эрудицию, общий уровень грамотности. Я тоже не любил географию и историю, зато любил химию и геометрию. Кто-то скажет, что ему не нужна тригонометрия и закон ома, кто-то скажет, что природоведение не нужно.... а потом мы имеем людей .которые стройными рядами ходят в церкви по воскресеньям, а по субботам (или когда там она) смотрят битву экстрасенсов и "заряжают" воду через телевизор. Ходят к гадалкам, лечатся гомеопатией (потому что про валентность валентностью, но кругозора не хватает даже на то, чтобы на бытовом уровне понимать, что вещество состоит из молекул, и сколько там в общих чертах этих молекул, чтобы сделать разведение C200 и лечиться этим).

    Школа вбивает в людей всё подряд потому, что в этом возрасте дети отлично впитывают знания и концепции. Им это дастся легче, чем взрослым. Зато будет в целом меньше мракобесия. Ну изначально такая задумка.

    Вы не знаете заранее что вам пригодится, а что нет. Мир сложен, многообразен и всё в нём взаимосвязано. Вот "Васе" не нужна история, а потом он вылез в политику и от скудоумия и недостаточной общей эрудиции творит какую-то дичь в думе.
    Вот Яжматери не нужна была химия, а потом она на последние деньги лечит чадо фуфломицином не понимая, что С200 вытяжки из печени утки - это значит. что утка пролетала в соседней галактике.

    Вообще любая такая категоричность в суждениях, ИМХО, признак малой эрудиции и зашоренного мышления.
  • Как посчитать суммы в списке словарей?

    trapwalker
    @trapwalker Куратор тега Python
    pfemidi, некоторые люди искренне считают, что им ни к чему знать как правильно употреблять "-тся" и "-ться".
  • Как посчитать суммы в списке словарей?

    trapwalker
    @trapwalker Куратор тега Python
    collections, itertools именно так, только зубрёжка

    pfemidi, да зачем зубрить-то? Поймите, что в itertools всякое про итераторы, а в collections про структуры данных. Всё. Если что надо -
    > help('itertools')
    ...
    DESCRIPTION
        Infinite iterators:
        count(start=0, step=1) --> start, start+step, start+2*step, ...
        cycle(p) --> p0, p1, ... plast, p0, p1, ...
        repeat(elem [,n]) --> elem, elem, elem, ... endlessly or up to n times
        
        Iterators terminating on the shortest input sequence:
        accumulate(p[, func]) --> p0, p0+p1, p0+p1+p2
        chain(p, q, ...) --> p0, p1, ... plast, q0, q1, ... 
        chain.from_iterable([p, q, ...]) --> p0, p1, ... plast, q0, q1, ... 
        compress(data, selectors) --> (d[0] if s[0]), (d[1] if s[1]), ...
        dropwhile(pred, seq) --> seq[n], seq[n+1], starting when pred fails
        groupby(iterable[, keyfunc]) --> sub-iterators grouped by value of keyfunc(v)
        filterfalse(pred, seq) --> elements of seq where pred(elem) is False
        islice(seq, [start,] stop [, step]) --> elements from
               seq[start:stop:step]
        starmap(fun, seq) --> fun(*seq[0]), fun(*seq[1]), ...
        tee(it, n=2) --> (it1, it2 , ... itn) splits one iterator into n
        takewhile(pred, seq) --> seq[0], seq[1], until pred fails
        zip_longest(p, q, ...) --> (p[0], q[0]), (p[1], q[1]), ... 
        
        Combinatoric generators:
        product(p, q, ... [repeat=1]) --> cartesian product
        permutations(p[, r])
        combinations(p, r)
        combinations_with_replacement(p, r)

    Это куда проще и быстрее, чем свои комбинаторные перестановки реализовывать и тестами обкладывать.
    Надо глубже -- один клик и вы в исходниках рассматриваете реализацию.
  • Как посчитать суммы в списке словарей?

    trapwalker
    @trapwalker Куратор тега Python
    pfemidi,
    a = []
    for i in foo:
        for j in bar:
            a.append(str(((i + 10) * j)**3))
    a.join("+")

    действительно читается и поддерживается легче, чем:
    "+".join(str(((i + 10) * j)**3) for j in bar for i in foo)

    =) А про SomeBlackBox вы всё же слукавили.

    collections, itertools и прочие подобные, которые часто тут мелькают, лично для меня являются как раз теми самыми "чёрными ящиками" в которых чёрт знает что делается.

    Если это черные ящики, то особенности магии питоновского ООП, декораторы, дескрипторы, концепция мутабельности, особенности работы со строками для вас будут ещё более черным и мутным ящиком. Ну что поделать. Если бы вы еще реже пользовались питоном, то для вас '+'.join был бы не понятным черным ящиком и вы бы удивлялись почему не хорошо как везде s = s + 'some_next_part'.
  • Как посчитать суммы в списке словарей?

    trapwalker
    @trapwalker Куратор тега Python
    Владимир Куц, leftpad, в реальной жизни очень мало проблем с единственной причиной. Обычно причин целый букет и главную даже порой найти трудно. В случае с лефтпадом там тоже вскрылось много всего: и сложившаяся практика нефиксирования зависимостей, и уязвимость пакетной системы, и культ карго в плане использования тупых ненужных библиотек, и несовершенный дизайн стандартной библиотеки.
    Мне кажется вот такой нечитаемый код с генераторами, лямбдами и фильтрами в проде - это самое плохое, что можно было вынести в качестве урока из истории с leftpad.

    Всё же вы завели речь о двух крайностях. Из стандартной библиотеки счетчики скорее всего не исчезнут внезапно по инициативе какого-то обиженного оболтуса. Ну или вы безответственно отнеслись к фиксации версии питона для деплоя своего продукта.

    В ревью на прод я бы такой код не пропустил именно из-за плохой читабельности и поддерживаемости. Но как одноразовый скриптик для обработки статистики логов при поиске трудноуловимого бага -- вполне сойдёт.
  • Как посчитать суммы в списке словарей?

    trapwalker
    @trapwalker Куратор тега Python
    pfemidi, ок. Видимо у всех в голове это по-разному.
    Для меня проще однажды понять принцип работы, чем запоминать каике-то паттерны и примеры использования. Вообще считаю "заучивать" и "помнить" - это вредно. Это мёртвый груз, как стихотворение про Бородино, зазубренное в средней школе. А вот понимание - это уже никуда не денется. Если вы что-то поняли, то оно улеглось не как монолитный кирпич в голове, а как строгая логическая система, опирающаяся на другие понимания и привязанная сотней якорей к опыту, знаниям, рабочим инструментам сознания.

    Увидел новую библиотеку, класс -- разберись как работает, пойми для чего он нужен и почему его сделали именно таким. Когда понял и разобрался, то уже не нужно "вспоминать" что там к чему, можно сразу применять понятный инструмент. При условии, конечно, что инструмент эргономичен и хорошо написан. Если даже и выпадут из головы какие-то тонкости или нюансы API, выветрится название метода, то IDE подскажет или интуиция. Иногда думаешь как сам бы сделал такой класс, метод, API, а потом смотришь -- точно: почти так и сделано.

    Хотя, надо сказать, не всё в стдлибе питона идеально. ох не всё.
  • Как посчитать суммы в списке словарей?

    trapwalker
    @trapwalker Куратор тега Python
    pfemidi, вы вот сейчас серьёзно?
    модуль collections и что из него нужно импортировать в конкретном случае, это уровень миддла как минимум

    Вот вы это вот серьёзно сейчас сказали? Мидла как минимум? То есть в некоторых, ок, пусть редких случаях и "синьоры" могут испугаться простого и понятного счетчика из стандартной библиотеки?
    вариант Владимир Куц легче для понимания новичкам в питоне

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

    Джунов нужно растить и обучать на хороших примерах, а не на говнокоде потому что, по вашей логике, из говнокода они могут нечаянно чему-нибудь научиться научиться.

    Я понимаю, что это, скорее всего, учебный пример. Как все учебные примеры он синтетический и направлен на закрепление какого-то материала. Если этот материал -
    генераторы и лямбды, то решение Владимир Куц вполне резонно и призвано повысить у студента скиллы разбора синтаксиса питоновского функционального подхода.
    Если закрепляемый материал - это стандартная библиотека (а её нужно осваивать всё же джунам, а не синьорам, простите), то решение со счетчиками правильнее.

    Ну и если задание было на собеседовании, то решение со счетчиками однозначно лучше, поскольку читабельнее и прозрачнее, включает специфическое использование стандартной библиотеки, работает за один проход и, в целом. понятнее, если освоить счетчики. Из этого решения можно чему-то научиться.

    Ну и остаётся вероятность, что вы меня просто тролите. Как может ЭТО быть легче для понимания?
  • Как посчитать суммы в списке словарей?

    trapwalker
    @trapwalker Куратор тега Python
    pfemidi, Дополнил решение для соответствия формату. Хотя, ИМХО, это тривиально и мало познавательно.
    c = sum((Counter({d['id']: d['qty']}) for d in a), Counter())
    result = [dict(id=k, qty=v) for k, v in c.items()]
  • Как посчитать суммы в списке словарей?

    trapwalker
    @trapwalker Куратор тега Python
    pfemidi, резонное замечание на счет результата. Но на счет понятности и читабельности поспорил бы.
  • Как посчитать суммы в списке словарей?

    trapwalker
    @trapwalker Куратор тега Python
    Сергей Горностаев, видимо автор вопроса намекает на читабельность. Надо сказать что вложенные списковые сборки и лямбда делают своё дело.
    Автора, кстати, решение, ИМХО, выглядит тоже так себе=), а попытка придраться хотя бы к чему-нибудь выглядит довольно забавно.
    Зацените, кстати вариант:
    sum((Counter({d['id']: d['qty']}) for d in a), Counter())
  • Как посчитать суммы в списке словарей?

    trapwalker
    @trapwalker Куратор тега Python
    Смахивает на задание, а не вопрос. Расскажите, что ли, как вы пытались решить задачу, какие у вас мысли на счет решения, что именно не получается?
    Этот ресурс не для двоечников.
  • Как правильно написать запрос к БД?

    trapwalker
    @trapwalker
    1) Много запросов уходит.

    В смысле?! В одном запросе приджойньте. Один запрос будет всего.
    2) Мне нужно вывести пятерых с наибольшим коэффициентом.

    Ну да, а в чем проблема? Я всё это понял из вашей задачи. И то, что я сказал не противоречит.
    Вы в одном селекте можете одну и ту же таблицу сколько угодно раз "перемножить" на другую. Вы же понимаете почему join - это произведение в реляционном смысле?

    UPD. Реляционное произведение таблиц никакого отношения к вашему произведению коэффициентов не имеет, если что. Ну мало ли... на всякий случай, вдруг опять как-то не так поймёте
  • Как сделать чтоб код Python скачивал папку, и распаковывалась в директорию?

    trapwalker
    @trapwalker Куратор тега Python
    @apiwi
    Возможно тут нужен вообще другой код.

    Да, тут нужен другой код. Задача поставлена расплывчато и неконкретно:
    с яндекс диска ( или другого хостинга)

    И, похоже, не является вопросом, а скорее заданием. Я вас верно понял?
  • Как сделать чтоб код Python скачивал папку, и распаковывалась в директорию?

    trapwalker
    @trapwalker Куратор тега Python
    Влад Григорьев, согласен. Одно дело если бы автор вопроса хотел научиться что-то такое делать, пробовал разные варианты, читал документацию и гуглил примеры, но ему что-то было принципиально не понятно. Тут и помочь не грех.
    В данном же случае у человека на лицо необходимость сделать какую-то практическую задачу и забыть её как страшный сон. Никаких попыток самостоятельного решения нет, а значит вопрос этот не вопрос вовсе, а задание.
    С заданиями, действительно, нужно идти к фрилансерам.
  • Как проложить путь в Python 3.8.2 к C:\Users\"ИМЯ ПОЛЬЗОВАТЕЛЯ"\Documents?

    trapwalker
    @trapwalker Куратор тега Python
    А возможно чтоб код сам находил папку эту?

    apiwi, я ж напсал вам ответ. Что вам не нравится в нём?
  • Как проложить путь в Python 3.8.2 к C:\Users\"ИМЯ ПОЛЬЗОВАТЕЛЯ"\Documents?

    trapwalker
    @trapwalker Куратор тега Python
    apiwi, это же отдельный вопрос. Оформляйте его соответствующе, а перед этим поищите готовое решение