关于Pythonic的方式
1. 使用enumerate()而不是range()进行迭代
nums = [1,2,3,4,5]
for i, num in enumerate(nums):
if num % 2 == 0:
nums[i] = "even";
for i, num in enumerate(nums, start=10):
print(i, num);
2. 使用递推式构造列表而不是map()和filter()
nums = [1,2,3,4,5]
def square(x):
return x*x;
ret = list(map(square, nums))
ret = [square(x) for x in nums]
nums = [1,2,3,4,5]
def is_odd(x):
return bool(x%2);
ret = list(filter(is_odd, nums))
ret = [x for x in nums if is_odd(x)]
3. 使用断点breakpoint()调试而不是print()
- 若使用的是
Python3.7
,则无需导入任何内容,只需在代码中要放入调试器的位置调用breakpoint()
;
Python3.6-
版本,需显示导入pdb
:
import pdb; pdb.set_trace();
4. 使用f-String格式化字符串
5. 使用sorted()对复杂列表进行排序
- 默认情况下,
sorted()
已按升序对输入进行排序,而reverse
关键字参数则按降序排序。
- 可选关键字
key
允许在排序之前指定将在每个元素上调用的函数。添加函数允许自定义排序规则。
data = [
{"type" : "int", "value" : 5},
{"type" : "str", "value" : "test"},
{"type" : "list", "value" : []}
]
sorted(data, key=lambda data: data["type"]);