最後活躍 1731080194

some examples of good and bad pythonic snippets

修訂 8e1db9db718f0ddc8e7f8186af79f020a3e47652

is-pythonic.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.