Последняя активность 1731080194

some examples of good and bad pythonic snippets

Версия 9d8370e667f6f74f1dad8c2d016a22024ecf60b2

ispythonic.md Исходник

Pythonic" code refers to code that is written in a way that is idiomatic to Python, taking advantage of its features and conventions to produce clear, concise, and readable code. Here are some examples showcasing Pythonic principles:

1. List Comprehensions

Not Pythonic:

squares = [] 
for x in range(10): 
    squares.append(x**2) 

Pythonic:

squares = [x**2 for x in range(10)]

2. Using enumerate()

Not Pythonic:

index = 0 
for value in my_list: 
    print(index, value) 
    index += 1 

Pythonic:

for index, value in enumerate(my_list): 
    print(index, value) 

3. Using zip()

Not Pythonic:

names = ['Alice', 'Bob', 'Charlie'] 
ages = [24, 30, 22] 
combined = [] 
for i in range(len(names)): 
    combined.append((names[i], ages[i])) 

Pythonic:

combined = list(zip(names, ages))

4. Using with for File Operations

Not Pythonic:

file = open('data.txt', 'r') 
data = file.read() 
file.close() 

Pythonic:

with open('data.txt', 'r') as file: 
    data = file.read() 

5. Using Generators for Efficient Iteration

Not Pythonic:

def get_even_numbers(n): 
    even_numbers = [] 
    for i in range(n): 
        if i % 2 == 0: 
            even_numbers.append(i) 
    return even_numbers 

Pythonic:

def get_even_numbers(n): 
    return (i for i in range(n) if i % 2 == 0) 

6. Using any() and all()

Not Pythonic:

if len(my_list) > 0: 
    has_values = True 
else: 
    has_values = False 

Pythonic:

has_values = bool(my_list)

7. Conditional Expressions (Ternary Operator)

Not Pythonic:

if condition: 
    result = 'Yes' 
else: 
    result = 'No' 

Pythonic:

result = 'Yes' if condition else 'No'

8. Leveraging Default Dictionary

Not Pythonic:

counts = {} 
for word in words: 
    if word in counts: 
        counts[word] += 1 
    else: 
        counts[word] = 1 

Pythonic:

from collections import defaultdict 
 
counts = defaultdict(int) 
for word in words: 
    counts[word] += 1 

Conclusion

Pythonic code emphasizes readability and efficiency, often leveraging built-in functions and language features to reduce boilerplate code. By adopting these idioms, you can write code that is not only functional but also elegant and easy to understand.