Tutoriales

32 jergas esenciales de Python para conmemorar el 32.º aniversario de Python

enero de 1994, Guido van Rossum Anunciar Pitón 1.0 Lanzado al mundo a través de una publicación en Usenet, prometía un lenguaje con una «sintaxis legible» que salvaría a los desarrolladores de «romper el código Perl que escribiste la semana pasada».

Treinta años después, Python se ha convertido en uno de los lenguajes de programación más utilizados del mundo. Para celebrar el 32 aniversario de Python, aquí están los 32 jerga útil de Python Esto ilustra por qué la simplicidad y claridad de Python siguen siendo importantes.

notas: Hay algunos ejemplos que cambian ligeramente la regla de «una línea» en favor de la practicidad. El objetivo aquí es la claridad, no el golf de códigos.

1. Intercambiar dos variables

a, b = b, a

No se necesitan variables temporales. El desempaquetado de tuplas de Python hace que esto sea muy fácil.

Prueba esto:

Ejecute el siguiente código desde la consola de Python:

>>> a, b = 5, 10
>>> print(f"Before: a={a}, b={b}")
Before: a=5, b=10
>>> a, b = b, a
>>> print(f"After: a={a}, b={b}")
After: a=10, b=5
Código Python para intercambiar dos variables.

2. Invertir una cuerda

reversed_string = original[::-1]

El símbolo de corte con zancada -1 se lee como magia.

Prueba esto:

>>> original = "Ostechnix"
>>> reversed_string = original[::-1]
>>> print(reversed_string)
xinhcetsO

3. Comprueba si la cuerda es un palíndromo.

is_palindrome = text == text[::-1]

Combine la inversión de cuerdas con la comparación para la detección de palíndromos sobre la marcha.

Prueba esto:

>>> text = "racecar"
>>> is_palindrome = text == text[::-1]
>>> print(is_palindrome)
True
>>> text = "ostechnix"
>>> print(text == text[::-1])
False

4. Aplanar listas anidadas

flat = [item for sublist in nested_list for item in sublist]

Las listas por comprensión hacen que el aplanamiento sea elegante y legible.

Prueba esto:

>>> nested_list = [[1, 2], [3, 4], [5, 6]]
>>> flat = [item for sublist in nested_list for item in sublist]
>>> print(flat)
[1, 2, 3, 4, 5, 6]

5. Busca elementos únicos

unique = list(set(my_list))

Convierta a un conjunto y regrese. Aplicaciones prácticas de la teoría de conjuntos en Python.

Prueba esto:

>>> my_list = [1, 2, 2, 3, 3, 3, 4, 4, 4, 4]
>>> unique = list(set(my_list))
>>> print(unique)
[1, 2, 3, 4]

6. Leer archivos en la lista

lines = open('file.txt').read().splitlines()

Una línea del disco a la memoria (aunque recuerda usar with ¡Para código de producción! ).

Prueba esto:

>>> # First create a test file
>>> with open('test.txt', 'w') as f:
...     f.write("Line 1\nLine 2\nLine 3")
>>> lines = open('test.txt').read().splitlines()
>>> print(lines)
['Line 1', 'Line 2', 'Line 3']

7. Encuentra los elementos más comunes

most_common = max(set(my_list), key=my_list.count)

uso inteligente max() Tiene función de botón personalizado. Funciona bien para listas pequeñas. usar Counter para datos más grandes.

Prueba esto:

>>> my_list = [1, 2, 2, 3, 3, 3, 4, 4, 4, 4]
>>> most_common = max(set(my_list), key=my_list.count)
>>> print(most_common)
4

8. Transponer matriz

transposed = list(zip(*matrix))

este * Aquí los operadores de desembalaje hacen el trabajo pesado.

Prueba esto:

>>> matrix = [[1, 2, 3], [4, 5, 6]]
>>> transposed = list(zip(*matrix))
>>> print(transposed)
[(1, 4), (2, 5), (3, 6)]
>>> # Convert tuples to lists if needed
>>> print([list(row) for row in transposed])
[[1, 4], [2, 5], [3, 6]]

9. Crea un diccionario a partir de dos listas.

my_dict = dict(zip(keys, values))

zip() es el pegamento que mantiene unida la lista.

Prueba esto:

>>> keys = ['a', 'b', 'c']
>>> values = [1, 2, 3]
>>> my_dict = dict(zip(keys, values))
>>> print(my_dict)
{'a': 1, 'b': 2, 'c': 3}

10. Elimina duplicados y mantén el orden.

unique_ordered = list(dict.fromkeys(my_list))

A partir de Python 3.7, los diccionarios mantienen el orden de inserción, ¡lo cual es una característica que vale la pena celebrar!

Prueba esto:

>>> my_list = [3, 1, 2, 1, 3, 4, 2, 5]
>>> unique_ordered = list(dict.fromkeys(my_list))
>>> print(unique_ordered)
[3, 1, 2, 4, 5]

11. Encuentra todos los índices de un elemento.

indices = [i for i, x in enumerate(my_list) if x == target]

Enumerar y filtrar en una línea limpia.

Prueba esto:

>>> my_list = [1, 2, 3, 2, 4, 2, 5]
>>> target = 2
>>> indices = [i for i, x in enumerate(my_list) if x == target]
>>> print(indices)
[1, 3, 5]

12. Verifique si alguno o todos los artículos califican

has_even = any(x % 2 == 0 for x in numbers)
all_positive = all(x > 0 for x in numbers)

este any() y all() Las funciones con expresiones generadoras son muy poderosas.

Prueba esto:

>>> numbers = [1, 2, 3, 4, 5]
>>> has_even = any(x % 2 == 0 for x in numbers)
>>> print(has_even)
True
>>> all_positive = all(x > 0 for x in numbers)
>>> print(all_positive)
True

13. Ordenar diccionario por valor

sorted_dict = dict(sorted(my_dict.items(), key=lambda x: x[1]))

Las funciones Lambda facilitan la clasificación personalizada.

Prueba esto:

>>> my_dict = {'a': 3, 'b': 1, 'c': 2}
>>> sorted_dict = dict(sorted(my_dict.items(), key=lambda x: x[1]))
>>> print(sorted_dict)
{'b': 1, 'c': 2, 'a': 3}

14. Fusionar dos diccionarios

merged = {**dict1, **dict2}

El operador de descompresión del diccionario (Python 3.5+) es conciso y claro.

Prueba esto:

>>> dict1 = {'a': 1, 'b': 2}
>>> dict2 = {'c': 3, 'd': 4}
>>> merged = {**dict1, **dict2}
>>> print(merged)
{'a': 1, 'b': 2, 'c': 3, 'd': 4}

15. Obtenga los primeros N elementos del iterador

first_n = list(itertools.islice(iterator, n))

itertools.islice() Funciona con cualquier iterador sin cargar todo en la memoria.

Prueba esto:

>>> import itertools
>>> iterator = iter(range(100))
>>> first_n = list(itertools.islice(iterator, 5))
>>> print(first_n)
[0, 1, 2, 3, 4]

16. Crear gráficos de contador/frecuencia.

from collections import Counter; freq = Counter(my_list)

este Counter La clase es la navaja suiza para el conteo de frecuencia.

Prueba esto:

>>> from collections import Counter
>>> my_list = ['a', 'b', 'a', 'c', 'b', 'a']
>>> freq = Counter(my_list)
>>> print(freq)
Counter({'a': 3, 'b': 2, 'c': 1})
>>> print(freq.most_common(2))
[('a', 3), ('b', 2)]

17. Encuentra elementos en la lista A pero no en la lista B

difference = list(set(list_a) - set(list_b))

La acción de configuración lo hace intuitivo y rápido.

Prueba esto:

>>> list_a = [1, 2, 3, 4, 5]
>>> list_b = [3, 4, 5, 6, 7]
>>> difference = list(set(list_a) - set(list_b))
>>> print(difference)
[1, 2]

18. Obtén todas las permutaciones de una lista.

from itertools import permutations; perms = list(permutations(my_list))

itertools Las explosiones combinadas se manejan por usted.

Prueba esto:

>>> from itertools import permutations
>>> my_list = [1, 2, 3]
>>> perms = list(permutations(my_list))
>>> print(perms)
[(1, 2, 3), (1, 3, 2), (2, 1, 3), (2, 3, 1), (3, 1, 2), (3, 2, 1)]

19. Bonita impresión JSON

import json; print(json.dumps(data, indent=2))

Formato JSON instantáneo y legible por humanos.

Prueba esto:

>>> import json
>>> data = {'name': 'Python', 'age': 32, 'features': ['readable', 'powerful']}
>>> print(json.dumps(data, indent=2))
{
  "name": "Python",
  "age": 32,
  "features": [
    "readable",
    "powerful"
  ]
}

20. Calcular factoriales

from math import factorial; result = factorial(n)

O si quieres ser más elegante: result = eval('*'.join(map(str, range(1, n+1))))

Prueba esto:

>>> from math import factorial
>>> result = factorial(5)
>>> print(result)
120
>>> # The fancy way
>>> n = 5
>>> result = eval('*'.join(map(str, range(1, n+1))))
>>> print(result)
120

21. FizzBuzz una línea

['Fizz'*(i%3==0) + 'Buzz'*(i%5==0) or str(i) for i in range(1,101)]

Preguntas de entrevista clásicas resueltas con multiplicación de cadenas y lógica booleana.

Prueba esto:

>>> fizzbuzz = ['Fizz'*(i%3==0) + 'Buzz'*(i%5==0) or str(i) for i in range(1,21)]
>>> print(fizzbuzz)
['1', '2', 'Fizz', '4', 'Buzz', 'Fizz', '7', '8', 'Fizz', 'Buzz', '11', 'Fizz', '13', '14', 'FizzBuzz', '16', '17', 'Fizz', '19', 'Buzz']

22. Encuentra la intersección de múltiples listas.

intersection = list(set.intersection(*map(set, list_of_lists)))

Teoría de conjuntos combinada con un elegante análisis de intersecciones de listas múltiples.

Prueba esto:

>>> list_of_lists = [[1, 2, 3, 4], [2, 3, 4, 5], [3, 4, 5, 6]]
>>> intersection = list(set.intersection(*map(set, list_of_lists)))
>>> print(intersection)
[3, 4]

23. Convertir cadena a mayúsculas y minúsculas (seguro)

title=" ".join(word.capitalize() for word in text.split())

Comparar .title() Porque maneja los apóstrofes correctamente.

Prueba esto:

>>> text = "python's awesome one-liners"
>>> title=" ".join(word.capitalize() for word in text.split())
>>> print(title)
Python's Awesome One-liners
>>> # Compare with .title()
>>> print(text.title())
Python'S Awesome One-Liners

24. Crea un rango con números de coma flotante.

float_range = [x * 0.1 for x in range(10, 100)]

Superar la comprensión de listas range()límite de números enteros.

Prueba esto:

>>> float_range = [x * 0.1 for x in range(10, 20)]
>>> print(float_range)
[1.0, 1.1, 1.2000000000000002, 1.3, 1.4000000000000001, 1.5, 1.6, 1.7000000000000002, 1.8, 1.9000000000000001]

25. Descargar archivos de Internet

import urllib.request; urllib.request.urlretrieve(url, 'filename.ext')

Obtenga archivos de Internet en una línea.

Prueba esto:

>>> import urllib.request
>>> url="
>>> urllib.request.urlretrieve(url, 'python-logo.png')
('python-logo.png', )
>>> # File is now saved as 'python-logo.png'

26. Genera contraseñas aleatorias

import secrets, string; pwd = ''.join(secrets.choice(string.ascii_letters + string.digits) for _ in range(16))

Genere contraseñas aleatorias de forma segura utilizando la biblioteca estándar.

Prueba esto:

>>> import secrets, string
>>> pwd = ''.join(secrets.choice(string.ascii_letters + string.digits) for _ in range(16))
>>> print(pwd)
Kx9mP2nLq8WzBv3Y
>>> # Each run generates a cryptographically secure password
>>> pwd = ''.join(secrets.choice(string.ascii_letters + string.digits) for _ in range(16))
>>> print(pwd)
a7QnM5tR1wJzXp4G

27. Calcular el tiempo de ejecución del código (verificación rápida)

import time; start = time.time(); your_function(); elapsed = time.time() - start

Mediciones de rendimiento rápidas y sucias (utilizando timeit para una evaluación comparativa rigurosa).

Prueba esto:

>>> import time
>>> start = time.time()
>>> sum(range(1000000))  # Some operation to time
499999500000
>>> elapsed = time.time() - start
>>> print(f"Execution time: {elapsed:.6f} seconds")
Execution time: 15.000495 seconds

28. Encuentra todas las ocurrencias usando expresiones regulares.

import re; matches = re.findall(pattern, text)

Las expresiones regulares facilitan la combinación de patrones.

Prueba esto:

>>> import re
>>> text = "Python 1.0, Python 2.0, Python 3.0"
>>> pattern = r'Python \d+\.\d+'
>>> matches = re.findall(pattern, text)
>>> print(matches)
['Python 1.0', 'Python 2.0', 'Python 3.0']

29. Crea un servidor HTTP simple

python -m http.server 8000

Bueno, técnicamente esto es una línea de comando de una sola línea, ¡pero es demasiado útil para no incluirlo!

Prueba esto:

# Run this in your terminal
$ python -m http.server 8000
Serving HTTP on 0.0.0.0 port 8000 ( ...

# Then visit  in your browser
# Perfect for quickly sharing files or testing web pages locally

30. Operadores de comparación de cadenas

is_valid = 0 <= value <= 100

Python te permite escribir matemáticas como piensas.

Prueba esto:

>>> value = 50
>>> is_valid = 0 <= value <= 100
>>> print(is_valid)
True
>>> value = 150
>>> print(0 <= value <= 100)
False
>>> # You can chain any comparison operators
>>> x = 5
>>> print(1 < x < 10)
True

31. Obtener producto cartesiano de listas

from itertools import product; pairs = list(product(list1, list2))

Genera todas las combinaciones sin bucles anidados.

Prueba esto:

>>> from itertools import product
>>> list1 = ['A', 'B']
>>> list2 = [1, 2]
>>> pairs = list(product(list1, list2))
>>> print(pairs)
[('A', 1), ('A', 2), ('B', 1), ('B', 2)]
>>> # Works with any number of lists
>>> print(list(product(['X', 'Y'], [1, 2], ['a', 'b'])))
[('X', 1, 'a'), ('X', 1, 'b'), ('X', 2, 'a'), ('X', 2, 'b'), ('Y', 1, 'a'), ('Y', 1, 'b'), ('Y', 2, 'a'), ('Y', 2, 'b')]

32. Cree un servidor Lambda rápido (¡sí, de verdad!)

from flask import Flask; app = Flask(__name__); app.route('/')(lambda: 'Hello!')

No se recomienda para uso en producción, ¡pero muestra lo simple que puede ser Flask!

Prueba esto:

>>> from flask import Flask
>>> app = Flask(__name__)
>>> @app.route('/')
... def hello():
...     return 'Hello, Python is 32!'
>>> # Then run: app.run()
# Visit  to see your message

# Note: You'll need Flask installed: pip install flask

El espíritu de Python

Estas bromas no pretenden ser inteligentes. Reflejan los valores de larga data de Python:

  • La legibilidad triunfa sobre la habilidad
  • comportamiento claro
  • Potente biblioteca estándar
  • código auto explicativo

Cuando Guido anunció Python 1.0 en 1994, prometió que sería un lenguaje legible. Treinta y dos años después, Python todavía cumple esa promesa.

¡Feliz 32 aniversario, Pitón!

¿Cuál es tu declaración de Python favorita? ¡Por favor comparte en los comentarios a continuación!

Lectura adicional:

Publicaciones relacionadas

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *

Botón volver arriba