Pull to refresh
-20
0.7
Send message

Кратко и просто создавать коллекции.

numbers = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]

Это называется словом "литерал", в данном случае - списочный литерал.

Знание терминологи не обязательно для простых смертных, но весьма желательно для python разработчика с многолетним опытом и держателя профильного телеграм-канала. Объясню почему:

Литерал, как способ создания питон-объекта, существует не для только лишь всех. Хрестоматийный пример: множество из нескольких элементов можно задать литералом, напр {1, 2, 3}, но пустое множество создаётся только вызовом конструктора set(). Причина проста и естественна - для пустого множества не удалось придумать органично выглядящий и однозначно распознаваемый литерал.

В древности литералы существовали лишь для самых базовых типов, например чисел - ну как ты число сконструируешь? Т.е. можно конечно конструктором, вызов int() порождает 0, но один только ноль - этого мало. В питон литералы сразу завезли для списков и словарей, а множества (которые кстати тоже появились не сразу) изначально создавались только через конструктор, set([1, 2, 3]), и лишь потом для них придумали литералы, как синтаксический сахар.

В завершение хочется упомянуть, что кроме генераторов списков, ...

Есть и другие хорошие новости. Например, хотя для коллекции типа deque (очередь) нет литерала, и создавать её экземпляр приходится древним способом, deque([1, 2, 3]), для создания очереди можно воспользоваться генераторным выражением в качестве аргумента конструктора, deque(i * 2 for i in range(3)), что выглядит почти так же мило, как списочный генератор.

Оно не умеет отсекать тупиковые ветки, что достигается простым подтягиванием условий в тот цикл, где эти условия разрешимы. Если пофиксить это и еще пару косяков - решает мгновенно.

Боюсь-боюсь.

from itertools import permutations

# Define the possible attributes for each of the warehouses
colors = ["зеленый", "желтый", "синий", "белый", "красный"]
professions = ["каменщик", "портной", "электрик", "плотник", "программист"]
animals = ["леопард", "пума", "медведь", "тигр", "крокодил"]
foods = ["котлета", "хлеб", "пельмени", "макароны", "пицца"]
drinks = ["коньяк", "вино", "водка", "ром", "виски"]
# Generate all possible arrangements
for color_perm in permutations(colors):
    if color_perm.index("желтый") - 1 != color_perm.index("синий"):
        continue
    for profession_perm in permutations(professions):
        if profession_perm[0] != "плотник":
            continue
        if abs(color_perm.index("красный") - profession_perm.index("плотник")) != 1:
            continue
        if color_perm.index("зеленый") != profession_perm.index("каменщик"):
            continue
        for animal_perm in permutations(animals):
            if profession_perm.index("портной") != animal_perm.index("леопард"):
                continue
            for food_perm in permutations(foods):
                if food_perm[2] != "пельмени":
                    continue
                if color_perm.index("желтый") != food_perm.index("котлета"):
                    continue
                if profession_perm.index("электрик") != food_perm.index("хлеб"):
                    continue
                for drink_perm in permutations(drinks):
                    # Check the given conditions
                    if drink_perm.index("коньяк") != animal_perm.index("пума"):
                        continue
                    if color_perm.index("белый") != drink_perm.index("вино"):
                        continue
                    if abs(drink_perm.index("водка") - animal_perm.index("медведь")) != 1:
                        continue
                    if abs(animal_perm.index("тигр") - drink_perm.index("вино")) != 1:
                        continue
                    if drink_perm.index("виски") != food_perm.index("макароны"):
                        continue
                    if profession_perm.index("программист") != drink_perm.index("ром"):
                        continue
                    # If all conditions are met, print the result
                    idx_pizza = food_perm.index("пицца")
                    idx_crocodile = animal_perm.index("крокодил")
                    profession_pizza = profession_perm[idx_pizza]
                    profession_crocodile = profession_perm[idx_crocodile]
                    print(
                        f"Кто ест пиццу: {profession_pizza}, "
                        f"кто держит крокодила: {profession_crocodile}"
                    )

И что же, так 25 лет и живёте душа в душу? Прикольно.

Ну что он у коллег перестал спрашивать как-то проконтролировать можно. А вот насчет искать в интернете - как вы ему по рукам дали?

Незачем искать идиотов где-то, рассмотрим ваш случай. Я сделал очень простое высказывание: статья не содержит никакой конкретики (не считать же конкретикой "простейшую задачку с LeetCode"). Я дал примеры такой конкретики, просто для масштаба, а вдруг поймёт.

Что понял он - пока не известно, вы же поняли нечто совершенно своё. Так бывает.

Во избежание дальнейших недоразумений давайте прекратим наш разговор. Как собеседник вы меня не интересуете.

Вы о каких алгоритмах лепечете? Они, знаете, бывают разной сложности, каким-то обучают пятиклассников, каким-то - профильных второкурсников, еще каким-то - студентов постарше.

Вы сами-то какого полёта птица, с реализацией АВЛ-дерева справитесь без привлечения сторонних библиотек? А с привлечением? (шучу, конечно).

Нет ответа. Только уха лопух на КДПВ.

Медианная зарплата — это уровень, выше и ниже которого получает доход
одинаковое количество специалистов. Например, если медианная зарплата в
команде из десяти человек — 150 000 ₽, это значит, что пять человек
получают меньше 150 000 ₽, а пять — больше.

Люблю такое всякое. Главный по всем вопросам пропишет задней левой ногой определение - хоть стой, хоть падай.

Возьмем, к примеру, команду из двух человек, один с зарплатой 1р, другой - 1000р. Какова их медианная зарплата? Под определение подходит и 2р, и 999р.

Только не надо писать, что автор не это имел в виду. Что имел - то и написал, никто не неволил.

/mentor mode off.

Ошибка в другом. Равномерно полезной документации не бывает. В поиске ответа на свой вопрос приходится продираться сквозь завалы бесполезных/давно известных сведений, и это, знаете-ли, утомляет. Выход найден, это интерактивные помощники вроде чатгпт, за ними будущее. За ними, а не за мастерами пера, уважаемый человек-оркестр.

Задача мне не понравилась, из пальца высосана, а самодовольства море разливанное.

def magic(x: int, y: int, z: int) -> int:
    a = 1
    b = 2
    c = 3
    return a * x + b * y + c * z

s = magic("a", "b", "c")
print(f'a={s.count("a")}, b={s.count("b")}, c={s.count("c")}')

Без лоха и жизнь плоха.

...а для повышения точности системной частоты...

Влепить RC-генератор, затем калибровать его к температуре (а есть датчик?) - ради чего? Чтобы сэкономить на кварце? Рука-лицо.

С чего начать первые шаги?

Многие писали «загугли и найдёшь всё сама» и оскорбляли меня, вместо структурированного ответа.

Загугли и найдёшь всё сама. Просто это займёт много времени, гораздо больше, чем ты бы хотела. Терпи, пробуксовывай, не отступайся - барахтаться противно, но иначе никак.

Никакой ментор не утрёт все твои сопли. Сама, сама, сама.

Meld ужасен - типичный пример опенсорса на java.

Питон, джава - какая разница! /sarcasm off.

https://github.com/yousseb/meld/tree/master/meld

применил тороидальный трансформатор на 40W и 18V на вторичной обмотке

25V входного нестабилизированного -> 12V выходного стабилизированного - это перебор. Героически отводить тепло с девайса с кпд менее 50% - такое себе.

А что, транса со вторичной обмоткой для двухполупериодного выпрямителя не нашлось?

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

Вольное присваивание аргументам функций в питоне значений произвольного типа - это удобное решение для скриптовых языков. В котлине сходной гибкости и выразительности добиваются созданием нескольких одноименных функций с разной сигнатурой, но писанины больше. Аннотирование функций в питоне подравнивает ситуацию по объёму писанины, но котлином его не делает, в смысле строгости и производительности. Так что присоединяюсь к автору статьи: хочешь типов - присмотрись к другим языкам.

Уж лучше мордокнижник (референс - чернокнижник).

...достигается путем распределения фокусной силы на выходной диоптрии...

  • фокусное расстояние - знаю. размерность - длина, метры например.

  • оптическую силы линзы - знаю. измеряется в диоптриях. диоптрия - это метр^(-1).

  • выходной диоптрии не бывает. я вам больше скажу - внутренняя диоптрия (она тоже в текст затесалась) - так вот, её тоже не существует. беда.

  • фокусной силы не бывает. что-то вы зарапортовались.

В тред призывается@AlexeyNadezhin, чел, сделавший из своего любопытства к лампочкам профессию.

... уход крупного игрока из России сподвигнет отечественных разработчиков
улучшать качество своих продуктов. И это, по словам эксперта, пойдет
рынку только на пользу.

Какой лютый глум.

Зачотный бред. А термостатический комп будет?

ps. Не поймите меня неправильно, может парни и придумали что-то дельное, но написанное - бред.

Java - язык с непростой судьбой, начнём с того, что он задумывался как язык "для программирования бытовых электронных устройств" (wiki). Ему было трудно стать естественным, выразительным и красивым языком общего назначения, и он не смог. Многословный и суетливый старикан - так бы я его описал.

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

Я бы советовал глянуть в сторону Kotlin - современный, динамично развивающийся язык с прекрасной компиляцией в java-код и бесшовно интегрирующийся с java, мультипарадигменный, лаконичный и выразительный. Официальный язык для android-разработки. А зная его, вы автоматом будете знать и java - так уж оно устроено )

ps

Типизация: Мягкая

В питоне строгая динамическая типизация, а мягкая типизация существует только у вас в статье. Зачем, спрашивается? Недосуг заглянуть в ту же wiki?

Эх, был и я когда-то молод, учил питон, а еще качал без меры книжки. Глаза завидущие, руки загребущие. Дубликаты случались. Ну и написал вот это. Это не cli, это для выполнения в IDE, мне так удобно. Смотрел на вывод, выбирал что удалять. Писал для себя, давно было, учился, тапками не кидаться.

Не так чтобы очень сложно.
from os import walk
from os.path import basename, getsize, islink, join
from hashlib import md5
from collections import defaultdict


def duplicates(*roots, findLink=False, extensions=(".pdf", ".djvu", ".djv")):
    """
    usage: duplicates("папка1", "папка2", "папка3")
    """
    uniq_sizes = defaultdict(list)
    for root in roots:
        for pth, folder, files in walk(root):
            for name in [join(pth, f) for f in files if f.lower().endswith(extensions)]:
                if findLink or not islink(name):
                    uniq_sizes[getsize(name)].append(name)
    if uniq_sizes[0]:
        print("файлы-пустышки:", *sorted(uniq_sizes.pop(0)), sep="\n", end="\n\n")
    for v in [v for v in uniq_sizes.values() if 1 < len(v)]:
        duples = defaultdict(list)
        for name in v:
            with open(name, "rb") as f:
                duples[md5(f.read()).hexdigest()].append(name)
        for names in [v for v in duples.values() if 1 < len(v)]:
            print(min(map(basename, names), key=len))
            for name in names:
                print(f'rm "{name}"')
            print()

ps Сейчас запустил, глянул - мама дорогая, что творится-то!

1
23 ...

Information

Rating
1,463-rd
Registered
Activity