2023-06-29 13:44:48
10 Tips And Tricks To Write Better Python Code
10 советов и приемов для написания лучшего кода на Python1) 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() methoddata = (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) Хранение данных в Setsmy_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.Counterfrom 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-Stringsname = "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
3.7K viewsedited 10:44