Python 语言编程技巧
__name__ == “__main__”
这个表达式可用于判断当前模块是最先运行的模块,还是被导入的模块。
def main() -> None:
...
if __name__ == '__main__':
# 直接运行当前文件时执行。
# 当前文件被导入时不会执行。
main()
# 不论当前文件是直接运行还是被导入,以下代码都将被执行
print()
...
next 函数
next 函数有两个参数:迭代器参数,缺省值参数
next 函数返回迭代器参数所生成的下一个值,该值不存在的话返回缺省值参数
values = [3, 7, 10, 4, 8]
values2 = [3, 7, 4, 8]
# 返回列表内第一个大于9的元素,不存在的话返回 None
number = next((n for n in values if n > 9), None) # 10
number2 = next((n for n in values2 if n > 9), None) # None
# 返回列表内第一个大于9的元素的下标,不存在的话返回 -1
index = next((i for i, n in enumerate(values) if n > 9), -1) # 2
index2 = next((i for i, n in enumerate(values2) if n > 9), -1) # -1
map 和 filter
映射操作使用 map 函数,过滤操作使用 filter 函数
也可以都使用列表解析式
values = [1, 2, 3, 4, 5, 6]
# 偶数元素的平方
values2 = [n * n for n in values if n % 2 == 0]
print(values2) # [4, 16, 36]
values3 = list(map(lambda n: n * n, filter(lambda n: n % 2 == 0, values)))
print(values3) # [4, 16, 36]
all 和 any
all 函数判断是否全部元素为 TRUE
any 函数判断是否至少存在一个元素为 TRUE
values = [1, 3, 6, 9]
# 是否全部是偶数
print(all([n % 2 == 0 for n in values])) # False
# 是否至少存在一个偶数
print(any([n % 2 == 0 for n in values])) # True
reverse 和 reversed
[::-1] 翻转列表,返回新列表
reversed 函数翻转列表,返回迭代器
reverse 方法就地翻转列表
values = [1,2,3,4,5]
values2 = values[::-1]
print(values2) # [5, 4, 3, 2, 1]
values3 = list(reversed(values))
print(values3) # [5, 4, 3, 2, 1]
print(values) # [1, 2, 3, 4, 5]
values.reverse()
print(values) # [5, 4, 3, 2, 1]
zip
zip 函数可用于解决两个列表中相同下标的元素的连接问题
letters = ['a', 'b', 'c', 'd']
numbers = [1, 2, 3, 4]
print(list(zip(letters, numbers))) # [('a', 1), ('b', 2), ('c', 3), ('d', 4)]
for letter, number in zip(letters, numbers):
print(letter, number)
print(dict(zip(letters, numbers))) # {'a': 1, 'b': 2, 'c': 3, 'd': 4}
dict
[] 取出元素的值,元素不存在时报错
get 方法取出元素的值,元素不存在时返回缺省值参数的值
[] 设置元素的值
setdefault 方法取出元素的值,元素不存在时设置元素的值
dict1 = {1: 'a', 2: 'b'}
s1 = dict1.get(3, 'z')
print(s1, dict1) # z {1: 'a', 2: 'b'}
s2 = dict1.setdefault(1, 'z')
print(s2, dict1) # a {1: 'a', 2: 'b'}
s3 = dict1.setdefault(3, 'z')
print(s3, dict1) # z {1: 'a', 2: 'b', 3: 'z'}
合并两个 dict
dict1 = {1: 'a', 2: 'b'}
dict2 = {1: 'c', 3: 'd'}
dict3 = {**dict1, **dict2}
print(dict3) # {1: 'c', 2: 'b', 3: 'd'}
dict4 = {**dict2, **dict1}
print(dict4) # {1: 'a', 3: 'd', 2: 'b'}
reduce
聚合操作使用 reduce 函数
numbers = [1, 2, 3, 4, 5]
sum = reduce(lambda x, y: x + y, numbers)
sum2 = reduce(lambda x, y: x + y, numbers, 10)
print(sum, sum2) # 15 25
numbers = [3, 7, 2, 9, 1, 5]
max_value = reduce(lambda x, y: x if x > y else y, numbers)
min_value = reduce(lambda x, y: x if x < y else y, numbers)
print(max_value, min_value) # 9 1
浙公网安备 33010602011771号