Python 代码技巧
关于Python的几个编程小技巧,希望能希望能提高大家的编程效率
替代 range(len(x))
使用 enumerate()
data = [1, 2, 3, 5]
# 不推荐:
for i in range(len(data)):
if data[i] < 3:
data[i] = 0
print(data)
# 推荐:
for idx, num in enumerate(data):
if num < 3:
data[idx] = 0
print(data)
########## 输出 ##########
[0, 0, 3, 5]
[0, 0, 3, 5]
使用 enumerate()
可以使代码更具可读性,同时提供索引和数值。
使用列表表达式替代循环语句
# 不推荐:
squares = []
for i in range(10):
squares.append(i*i)
print(squares)
# 推荐:
squares = [i*i for i in range(10)]
print(squares)
########## 输出 ##########
[0, 1, 4, 9, 16, 25, 36, 49, 64, 81]
[0, 1, 4, 9, 16, 25, 36, 49, 64, 81]
列表表达式比传统循环更简洁且效率更高。
使用 sorted()
对复杂对象排序
# 对简单数据:
data = (1, 3, 4, 5, -1)
sorted_data = sorted(data, reverse=True)
print(sorted_data)
# 对字典:
data = [{'name':'Jack', 'age':6},
{'name':'Rose', 'age':5},
{'name':'Jia', 'age':16}]
sorted_data = sorted(data, key=lambda x: x['age'])
print(sorted_data)
########## 输出 ##########
[5, 4, 3, 1, -1]
[{'name': 'Rose', 'age': 5}, {'name': 'Jack', 'age': 6}, {'name': 'Jia', 'age': 16}]
sorted()
函数允许你以多种方式排序数据,包括反向排序和按特定键排序。
使用 set()
保存唯一值
my_list = [1, 3, 4, 5, 6, 6, 7, 7, 7, 7]
my_set = set(my_list)
print(my_set)
print({3, 4, 5, 6, 6, 8, 2, 4, 5, 5})
########## 输出 ##########
{1, 3, 4, 5, 6, 7}
{2, 3, 4, 5, 6, 8}
使用集合可以自动移除重复项,轻松处理唯一值。
使用迭代器节省内存
import sys
my_list = [i for i in range(1000)]
print(sum(my_list))
print(sys.getsizeof(my_list), 'bytes')
my_gen = (i for i in range(1000))
print(sum(my_gen))
print(sys.getsizeof(my_gen), 'bytes')
########## 输出 ##########
499500
9016 bytes
499500
112 bytes
生成器使用的内存比列表少,因为它们一次生成一个项目。
使用 .get()
和 .setdefault()
设置字典返回默认值
my_dict = {'item': 'football', 'price': 100}
count = my_dict.get('count', 0)
print(count)
count = my_dict.setdefault('count', 0)
print(count)
print(my_dict)
########## 输出 ##########
0
0
{'item': 'football', 'price': 100, 'count': 0}
.get()
和 .setdefault()
都可以用来为字典键提供默认值。
使用 collections.Counter
统计元素数量
from collections import Counter
my_list = [1, 2, 3, 5, 6, 6, 3, 5, 6, 6, 6]
counter = Counter(my_list)
print(counter)
print(counter[2])
print(counter.most_common(2))
########## 输出 ##########
Counter({6: 5, 3: 2, 5: 2, 1: 1, 2: 1})
1
[(6, 5), (3, 2)]
Counter
提供了一种简单的方法来统计集合中的元素出现次数。
使用 f-strings 格式化字符串(Python 3.6+)
name = 'Alex'
print(f'Hello, {name}')
i = 10
print(f'{i} squared is {i*i}')
########## 输出 ##########
Hello, Alex
10 squared is 100
F-strings 提供了一种可读且高效的方式来嵌入表达式到字符串中。
使用 .join()
连接字符串
list_of_strings = ['Hello', 'my', 'world', '!']
# 不推荐:
my_string = ''
for i in list_of_strings:
my_string += i + ' '
print(my_string)
# 推荐:
my_string = ' '.join(list_of_strings)
print(my_string)
########## 输出 ##########
Hello my world !
Hello my world !
.join()
方法是连接字符串的更高效和优雅的方法。
使用 {**d1, **d2}
合并字典(Python 3.5+)
d1 = {'item': 'football', 'price': 100}
d2 = {'item': 'football', 'count': 10}
merge_dict = {**d1, **d2}
print(merge_dict)
########## 输出 ##########
{'item': 'football', 'price': 100, 'count': 10}
这种语法允许以清晰简洁的方式合并字典。
使用 if x in [abc]
简化元素查询
colors = ['blue', 'green', 'red']
c = 'red'
if c in colors:
print(f'{c} is a main color.')
########## 输出 ##########
red is a main color.
使用 if x in [abc]
简化了对列表中成员的检查。
- 点击 这里 查看源视频 😉