Get Mystery Box with random crypto!

10 Tips And Tricks To Write Better Python Code 10 советов и п | Python/ django

10 Tips And Tricks To Write Better Python Code

10 советов и приемов для написания лучшего кода на Python

1) Iterate c enumerate() вместо range(len())

data = [1, 2, -3, -4]
# плохо:
for i in range(len(data)):
if data[i] < 0:
data[i] = 0

# хорошо:
data = [1, 2, -3, -4]
for idx, num in enumerate(data):
if num < 0:
data[idx] = 0


2) list comprehension вместо for-loops

#плохо:

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

# хорошо:

squares = [i*i for i in range(10)]

3) sorted() method

data = (3, 5, 1, 10, 9)
sorted_data = sorted(data, reverse=True) # [10, 9, 5, 3, 1]

data = [{"name": "Max", "age": 6},
{"name": "Lisa", "age": 20},
{"name": "Ben", "age": 9}
]
sorted_data = sorted(data, key=lambda x: x["age"])

4) Хранение данных в Sets

my_list = [1,2,3,4,5,6,7,7,7]
my_set = set(my_list) # removes duplicates

primes = {2,3,5,7,11,13,17,19}

5) Экономьте память с помощью генераторов

# list comprehension
my_list = [i for i in range(10000)]
print(sum(my_list)) # 49995000

# generator comprehension
my_gen = (i for i in range(10000))
print(sum(my_gen)) # 49995000

import sys

my_list = [i for i in range(10000)]
print(sys.getsizeof(my_list), 'bytes') # 87616 bytes

my_gen = (i for i in range(10000))
print(sys.getsizeof(my_gen), 'bytes') # 128 bytes

6) Определение значений по умолчанию в словарях с помощью .get() и .setdefault()

my_dict = {'item': 'football', 'price': 10.00}
count = my_dict['count'] # KeyError!

# лучше:
count = my_dict.get('count', 0) # optional default value

count = my_dict.setdefault('count', 0)
print(count) # 0
print(my_dict) # {'item': 'football', 'price': 10.00, 'count': 0}

7) Подсчет хэшируемых объектов с помощью collections.Counter

from collections import Counter

my_list = [10, 10, 10, 5, 5, 2, 9, 9, 9, 9, 9, 9]
counter = Counter(my_list)

print(counter) # Counter({9: 6, 10: 3, 5: 2, 2: 1})
print(counter[10]) # 3

from collections import Counter

my_list = [10, 10, 10, 5, 5, 2, 9, 9, 9, 9, 9, 9]
counter = Counter(my_list)

most_common = counter.most_common(2)
print(most_common) # [(9, 6), (10, 3)]
print(most_common[0]) # (9, 6)
print(most_common[0][0]) # 9

8 ) Форматирование строк с помощью f-Strings

name = "Alex"
my_string = f"Hello {name}"
print(my_string) # Hello Alex

i = 10
print(f"{i} squared is {i*i}") # 10 squared is 100

9) Конкатенация строк с помощью .join()

list_of_strings = ["Hello", "my", "friend"]

#плохо:
my_string = ""
for i in list_of_strings:
my_string += i + " "

#хорошо
list_of_strings = ["Hello", "my", "friend"]
my_string = " ".join(list_of_strings)

10) Слияние словарей с синтаксисом двойной звездочки **.
d1 = {'name': 'Alex', 'age': 25}
d2 = {'name': 'Alex', 'city': 'New York'}
merged_dict = {**d1, **d2}

@pythonl