Объяснение 10 удивительных однострочников Pythonic

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

1. Поменяйте местами две переменные

# a = 1; b = 2
a, b = b, a
# print(a,b) >> 2 1

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

2. Присвоение множественных переменных

a, b, *c = [1,2,3,4,5]
# print(a,b,c) >> 1 2 [3, 4, 5]

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

3. Суммируйте каждый второй элемент списка.

# a = [1,2,3,4,5,6]
s = sum(a[1::2])
# print(s) >> 12

Здесь нет необходимости в специальной функции сокращения, sum просто добавляет элементы каждой заданной итерации. Здесь используется расширенный синтаксис нарезки [::] для возврата каждого второго элемента. Вы можете читать это как [start: stop: step], поэтому [1::2] переводится как start с элементом индекса 1 (второй элемент), не останавливайтесь, пока список не закончится (без аргумента задано для второго параметра) и всегда делайте 2 шага.

4. Удалить несколько элементов.

# a = [1,2,3,4,5]
del a[::2]
# print(a) >> [2, 4]

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

5. Считать файл в массив строк

c = [line.strip() for line in open('file.txt')]
# print(c) >> ['test1', 'test2', 'test3', 'test4']

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

c = list(open('file.txt'))
# print(c) >> ['test1\n', 'test2\n', 'test3\n', 'test4\n']

На Python действительно так просто читать файл. Примечание: вы также можете использовать метод readlines(), если хотите.

6. Записать строку в файл

with open('file.txt', 'a') as f: f.write('hello world')
# print(list(open('file.txt'))) >> ['test1\n', 'test2\n', 'test3\n', 'test4\n', 'hello world']

С помощью оператора with вы можете напрямую записывать содержимое в файл. Убедитесь, что вы используете правильный режим для открытия файла (здесь 'a' для добавления содержимого).

7. Создание списка

l = [('Hi '​ + x) ​for​ x ​in​ [​'Alice'​, ​'Bob'​, ​'Pete'​]]
# print(l) >> ['Hi Alice', 'Hi Bob', 'Hi Pete']

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

8. Сопоставление списка

l = list(map(int, ['1', '2', '3']))
# print(l) >> [1, 2, 3]

Вы также можете использовать функцию Pythons map() для приведения каждого элемента списка к другому типу.

9. Создание сета

squares = { x**2 for x in range(6) if x < 4 }
# print(squares) >> {0, 1, 4, 9}

То же самое и с наборами. В дополнение к встроенному циклу for вы можете даже напрямую добавить условие!

10. Палиндромная проверка.

# phrase = 'deleveled'
isPalindrome = phrase == phrase[::-1]
# print(isPalindrome) >> true

Палиндром - это набор символов, которые читаются одинаково как вперед, так и назад. Обычно вам потребуется некоторый цикл и условия, чтобы проверить, является ли данная строка палиндромом. В Python вы просто сравниваете строку с ее обратной строкой. Вместо использования оператора разрезания [::-1] вы также можете использовать функцию reverse() для переворота строки.

Бонус: дзен Python

import this

Что ж, это не требует объяснений. Просто попробуйте сами, просто введя его в оболочку Python 😊🎉

Заверните

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

Опубликовано: 29 июля 2020 г. на dev.to