python笔记x-pythonic 优雅语法
交互赋值
常规写法
a = 1
b = 2
c = a
a = b
b = c
print(a, b)
优雅写法
a = 1
b = 2
a, b = b, a
print(a, b)
拓展:斐波那契数列
num = 100
a = 0 # 首位,每循环一次 a = b
b = 1 # 末位,每循环一次 b = n
n = 1 # 求和,每循环一次 n = a + b
print(n)
while n <= num:
n = a + b
if n <= num:
print(n)
a, b = b, n
else:
break
三目运算
常规写法
age = 20
if age > 18:
role = 'adult'
else:
role = 'child'
print(role)
优雅写法
age = 20
role = 'adult' if age > 20 else 'child'
print(role)
格式说明
role = 'value_if_true if condition else value_if_false
condition:表达式,判断通过执行value_if_false,判断不通过执行value_if_falsevalue_if_false:运算符value_if_false:运算符
推导式
- 列表推导式(list)
- 字典推导式(dict)
- 集合推导式(set)
- 生成器推导式
注意:元组(tuple)没有推导式
列表推导式(list):
案例:队列数平方案例
常规写法
a = []
for i in range(1, 11):
a.append(i * i)
print(a)
# 输出:[1, 4, 9, 16, 25, 36, 49, 64, 81, 100]
优雅写法
a = [i * i for i in range(1, 11)]
print(a)
# 输出:[1, 4, 9, 16, 25, 36, 49, 64, 81, 100]
列表推导式(list):
案例:带if的案例,找出队列中大于0的数
常规写法
a = [1, 3, -3, 4, -2, 8, -7, 6]
b = []
for i in a:
if i > 0:
b.append(i)
print(b)
优雅写法
a = [1, 3, -3, 4, -2, 8, -7, 6]
b = [i for i in a if i > 0]
print(b)
字典推导式(dcit):
案例:将字典dict1 = {"001": "aa", "002": "bb", "003": "cc"}的key和value互换
常规写法
dict1 = {"001": "aa", "002": "bb", "003": "cc"}
dict2 = {}
for key, value in dict1.items():
dict2[value] = key
print(dict2)
优雅写法
dict1 = {"001": "aa", "002": "bb", "003": "cc"}
dict3 = {value: key for key, value in dict1.items()}
print(dict3)
集合推导式(set):
案例:挑选出两个字符串中同时出现的字符,并放在集合中
常规写法
set1 = set()
for s in "hogwartsss":
if s in "hello world":
set1.add(s)
print(set1)
# 输出:{'r', 'h', 'w', 'o'}
优雅写法
set2 = {s for s in "hogwartsss" if s in "hello world"}
print(set2)
# 输出:{'r', 'h', 'w', 'o'}

浙公网安备 33010602011771号