Объяснение 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