Рубрики
Без рубрики

Как понять состав

Питон был очень веселым языком для меня, чтобы учиться. До сих пор, что я больше всего наслаждался … Теги с Python, CodeNewie, начинающими.

Питон был очень веселым языком для меня, чтобы учиться. До сих пор, что я больше всего наслаждался обучением, и использование являются составными. Когда я впервые взглянул на них, они не имели большого смысла для меня и выглядели очень странно. Я бы не сказал, что я эксперт сейчас Но я, безусловно, имею гораздо лучшее представление о том, что они делают сейчас, чем несколько недель назад.

Надеюсь, у нас все лучше понять, какие понимания есть и что они могут сделать к концу этого.

Что такое понимание?

Это не вопрос о том, как выглядит синтаксис (мы доберемся до этого), а скорее вопрос о том, что является пониманием. Гик для определения гиков я нашел очень хороший: Подразнения в Python предоставляют нам короткий и краткий способ построить новые последовательности (такие как списки, набор, словарь и т. Д.) Использование последовательностей, которые уже были определены.

Теперь давайте немного сломаем, что это говорит, что мы можем быстро построить новые последовательности с последовательностями, которые уже существуют. Это все еще звучит немного извилистым для меня, давайте просто скажем, что состоится, чтобы мы быстро создадим новые последовательности со старыми последовательностями.

На что они похожи?

Теперь, когда у нас есть немного представления о том, что такое понимание, давайте посмотрим на то, что может выглядеть простое понимание.

foo = [1, 2]
bar = [x for x in foo]
print(bar)
# [1, 2]

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

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

foo = {'one': 1, 'two': 2}
bar = {k: v*2 for (k,v) in foo.items()}
print(bar)
# {'one': 2, 'two': 4}

Здесь мы должны были сделать что-то другое другое. Поскольку нам нужен доступ к ключам, так и значениям, нам нужно позвонить в предметы Метод на нашем Foo Словарь, чтобы у нас есть доступ к ключам, так и значениям. Мы можем получить доступ к ключам нашего словаря, как мы сделали с нашим списком пониманием выше, но, чтобы оба значения нам нужны предметы метод.

foo = {'one': 1, 'two': 2}
bar = {item for item in foo}
print(bar)
print(type(bar))

# {'one', 'two'}
# 

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

Почему понимание имеет значение?

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

Например, позволяет сказать, что у нас есть список с первыми 5 простыми числами. Мы хотим умножить эти 5 простых чисел, но нам все еще нужен наш оригинальный список для сравнения.

foo = [2, 3, 5, 7, 11]
bar = [x**2 for x in foo]
print(foo)
print(bar)

# [2, 3, 5, 7, 11]
# [4, 9, 25, 49, 121]

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

foo = [2, 3, 5, 7, 11]
bar = []
for num in foo:
    bar.append(num**2)
print(bar)

# [4, 9, 25, 49, 121]

Мы должны написать две дополнительные линии, где мы объявляем наш список, а затем на самом деле добавление каждого из чисел на него. В этом смысле наше понимание не только короче, но и легко понять, как только вы видели несколько потенциалов.

Еще несколько примеров

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

# Dictionary

foo = {'one': 1, 'two': 2}
bar = {k: v+5 for (k,v) in foo.items()}
print(bar)

# {'one': 6, 'two': 7}

# Set

foo = {1, 2, 3}
bar = {num ** 3 for num in foo}
print(bar)

# {8, 1, 27}

# List

foo = [1, 2, 3, 4, 5, 6]
bar = [num + 3 for num in foo if num % 2 != 0]
print(bar)

# [4, 6, 8]

# Generator

foo = [1, 2, 3]
bar = (num for num in foo if num % 2 == 0)
for num in bar:
    print(num)

# 2

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

Давайте также возьмем быстрый момент, чтобы обсудить синтаксис на списке и целеприятиях генератора. Я добавил, если заявление, которое не было включено в предыдущие примеры. Влияние этого заключается в том, что наш новый набор, словарь, список или генератор будет включать в себя только элементы, которые EF IF оценивает как True.

Чтобы увидеть, как это будет выглядеть в стандарте для цикла, это просто обычное старое утверждение.

foo = [1, 2, 3]
bar = []
for num in foo:
    if num % 2 == 0:
        bar.append(num + 2)
print(bar)

# [4]

Все, что мы делаем здесь, добавляют 2 во все четные номера. Опять же, с нашим пониманием мы можем упростить синтаксис (и нам также не нужно беспокоиться о ошибках отступа!).

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

использованная литература

Оригинал: “https://dev.to/austinbh/how-to-comprehend-comprehensions-lj”