替代 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] 简化了对列表中成员的检查。

  • 点击 这里 查看源视频 😉