Это называется словом "литерал", в данном случае - списочный литерал.
Знание терминологи не обязательно для простых смертных, но весьма желательно для 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}"
)
Незачем искать идиотов где-то, рассмотрим ваш случай. Я сделал очень простое высказывание: статья не содержит никакой конкретики (не считать же конкретикой "простейшую задачку с LeetCode"). Я дал примеры такой конкретики, просто для масштаба, а вдруг поймёт.
Что понял он - пока не известно, вы же поняли нечто совершенно своё. Так бывает.
Во избежание дальнейших недоразумений давайте прекратим наш разговор. Как собеседник вы меня не интересуете.
Медианная зарплата — это уровень, выше и ниже которого получает доход одинаковое количество специалистов. Например, если медианная зарплата в команде из десяти человек — 150 000 ₽, это значит, что пять человек получают меньше 150 000 ₽, а пять — больше.
Люблю такое всякое. Главный по всем вопросам пропишет задней левой ногой определение - хоть стой, хоть падай.
Возьмем, к примеру, команду из двух человек, один с зарплатой 1р, другой - 1000р. Какова их медианная зарплата? Под определение подходит и 2р, и 999р.
Только не надо писать, что автор не это имел в виду. Что имел - то и написал, никто не неволил.
Ошибка в другом. Равномерно полезной документации не бывает. В поиске ответа на свой вопрос приходится продираться сквозь завалы бесполезных/давно известных сведений, и это, знаете-ли, утомляет. Выход найден, это интерактивные помощники вроде чатгпт, за ними будущее. За ними, а не за мастерами пера, уважаемый человек-оркестр.
Задача мне не понравилась, из пальца высосана, а самодовольства море разливанное.
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")}')
Многие писали «загугли и найдёшь всё сама» и оскорбляли меня, вместо структурированного ответа.
Загугли и найдёшь всё сама. Просто это займёт много времени, гораздо больше, чем ты бы хотела. Терпи, пробуксовывай, не отступайся - барахтаться противно, но иначе никак.
Никакой ментор не утрёт все твои сопли. Сама, сама, сама.
С момента создания питона разработчики языков додумались, удивительное дело, в статически типизированных языках типа Kotlin выводить тип переменной из вида (написания) присваемого значения. Меньше синтаксического мусора, почти как в питоне).
Вольное присваивание аргументам функций в питоне значений произвольного типа - это удобное решение для скриптовых языков. В котлине сходной гибкости и выразительности добиваются созданием нескольких одноименных функций с разной сигнатурой, но писанины больше. Аннотирование функций в питоне подравнивает ситуацию по объёму писанины, но котлином его не делает, в смысле строгости и производительности. Так что присоединяюсь к автору статьи: хочешь типов - присмотрись к другим языкам.
... уход крупного игрока из России сподвигнет отечественных разработчиков улучшать качество своих продуктов. И это, по словам эксперта, пойдет рынку только на пользу.
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 Сейчас запустил, глянул - мама дорогая, что творится-то!
Это называется словом "литерал", в данном случае - списочный литерал.
Знание терминологи не обязательно для простых смертных, но весьма желательно для python разработчика с многолетним опытом и держателя профильного телеграм-канала. Объясню почему:
Литерал, как способ создания питон-объекта, существует не для только лишь всех. Хрестоматийный пример: множество из нескольких элементов можно задать литералом, напр
{1, 2, 3}
, но пустое множество создаётся только вызовом конструктораset()
. Причина проста и естественна - для пустого множества не удалось придумать органично выглядящий и однозначно распознаваемый литерал.В древности литералы существовали лишь для самых базовых типов, например чисел - ну как ты число сконструируешь? Т.е. можно конечно конструктором, вызов
int()
порождает0
, но один только ноль - этого мало. В питон литералы сразу завезли для списков и словарей, а множества (которые кстати тоже появились не сразу) изначально создавались только через конструктор,set([1, 2, 3])
, и лишь потом для них придумали литералы, как синтаксический сахар.Есть и другие хорошие новости. Например, хотя для коллекции типа
deque
(очередь) нет литерала, и создавать её экземпляр приходится древним способом,deque([1, 2, 3])
, для создания очереди можно воспользоваться генераторным выражением в качестве аргумента конструктора,deque(i * 2 for i in range(3))
, что выглядит почти так же мило, как списочный генератор.Оно не умеет отсекать тупиковые ветки, что достигается простым подтягиванием условий в тот цикл, где эти условия разрешимы. Если пофиксить это и еще пару косяков - решает мгновенно.
Боюсь-боюсь.
И что же, так 25 лет и живёте душа в душу? Прикольно.
Ну что он у коллег перестал спрашивать как-то проконтролировать можно. А вот насчет искать в интернете - как вы ему по рукам дали?
Незачем искать идиотов где-то, рассмотрим ваш случай. Я сделал очень простое высказывание: статья не содержит никакой конкретики (не считать же конкретикой "простейшую задачку с LeetCode"). Я дал примеры такой конкретики, просто для масштаба, а вдруг поймёт.
Что понял он - пока не известно, вы же поняли нечто совершенно своё. Так бывает.
Во избежание дальнейших недоразумений давайте прекратим наш разговор. Как собеседник вы меня не интересуете.
Вы о каких алгоритмах лепечете? Они, знаете, бывают разной сложности, каким-то обучают пятиклассников, каким-то - профильных второкурсников, еще каким-то - студентов постарше.
Вы сами-то какого полёта птица, с реализацией АВЛ-дерева справитесь без привлечения сторонних библиотек? А с привлечением? (шучу, конечно).
Нет ответа. Только уха лопух на КДПВ.
Люблю такое всякое. Главный по всем вопросам пропишет задней левой ногой определение - хоть стой, хоть падай.
Возьмем, к примеру, команду из двух человек, один с зарплатой 1р, другой - 1000р. Какова их медианная зарплата? Под определение подходит и 2р, и 999р.
Только не надо писать, что автор не это имел в виду. Что имел - то и написал, никто не неволил.
/mentor mode off.
Ошибка в другом. Равномерно полезной документации не бывает. В поиске ответа на свой вопрос приходится продираться сквозь завалы бесполезных/давно известных сведений, и это, знаете-ли, утомляет. Выход найден, это интерактивные помощники вроде чатгпт, за ними будущее. За ними, а не за мастерами пера, уважаемый человек-оркестр.
Задача мне не понравилась, из пальца высосана, а самодовольства море разливанное.
Без лоха и жизнь плоха.
Влепить RC-генератор, затем калибровать его к температуре (а есть датчик?) - ради чего? Чтобы сэкономить на кварце? Рука-лицо.
Загугли и найдёшь всё сама. Просто это займёт много времени, гораздо больше, чем ты бы хотела. Терпи, пробуксовывай, не отступайся - барахтаться противно, но иначе никак.
Никакой ментор не утрёт все твои сопли. Сама, сама, сама.
Питон, джава - какая разница! /sarcasm off.
https://github.com/yousseb/meld/tree/master/meld
25V входного нестабилизированного -> 12V выходного стабилизированного - это перебор. Героически отводить тепло с девайса с кпд менее 50% - такое себе.
А что, транса со вторичной обмоткой для двухполупериодного выпрямителя не нашлось?
С момента создания питона разработчики языков додумались, удивительное дело, в статически типизированных языках типа Kotlin выводить тип переменной из вида (написания) присваемого значения. Меньше синтаксического мусора, почти как в питоне).
Вольное присваивание аргументам функций в питоне значений произвольного типа - это удобное решение для скриптовых языков. В котлине сходной гибкости и выразительности добиваются созданием нескольких одноименных функций с разной сигнатурой, но писанины больше. Аннотирование функций в питоне подравнивает ситуацию по объёму писанины, но котлином его не делает, в смысле строгости и производительности. Так что присоединяюсь к автору статьи: хочешь типов - присмотрись к другим языкам.
Уж лучше мордокнижник (референс - чернокнижник).
фокусное расстояние - знаю. размерность - длина, метры например.
оптическую силы линзы - знаю. измеряется в диоптриях. диоптрия - это метр^(-1).
выходной диоптрии не бывает. я вам больше скажу - внутренняя диоптрия (она тоже в текст затесалась) - так вот, её тоже не существует. беда.
фокусной силы не бывает. что-то вы зарапортовались.
В тред призывается@AlexeyNadezhin, чел, сделавший из своего любопытства к лампочкам профессию.
Какой лютый глум.
Зачотный бред. А термостатический комп будет?
ps. Не поймите меня неправильно, может парни и придумали что-то дельное, но написанное - бред.
Java - язык с непростой судьбой, начнём с того, что он задумывался как язык "для программирования бытовых электронных устройств" (wiki). Ему было трудно стать естественным, выразительным и красивым языком общего назначения, и он не смог. Многословный и суетливый старикан - так бы я его описал.
Его сильная сторона - то, что производимый им код исполняется на java-машине, а таковая машина портирована на все мыслимые архитектуры. Но за прошедшие годы многие это оценили и создали языки, генерирующие байткод для java-машины, есть даже реализация питона для неё, правда, она заброшена.
Я бы советовал глянуть в сторону Kotlin - современный, динамично развивающийся язык с прекрасной компиляцией в java-код и бесшовно интегрирующийся с java, мультипарадигменный, лаконичный и выразительный. Официальный язык для android-разработки. А зная его, вы автоматом будете знать и java - так уж оно устроено )
ps
В питоне строгая динамическая типизация, а мягкая типизация существует только у вас в статье. Зачем, спрашивается? Недосуг заглянуть в ту же wiki?
Эх, был и я когда-то молод, учил питон, а еще качал без меры книжки. Глаза завидущие, руки загребущие. Дубликаты случались. Ну и написал вот это. Это не cli, это для выполнения в IDE, мне так удобно. Смотрел на вывод, выбирал что удалять. Писал для себя, давно было, учился, тапками не кидаться.
Не так чтобы очень сложно.
ps Сейчас запустил, глянул - мама дорогая, что творится-то!