导语
产品是需要打磨出来的,重点在于打磨二字,没有什么产品可以一就而成
字典替代switch
Switch语句同样为条件分支语句
其他语言中Switch语句的作用,C#
字典映射替代switch语句
示例:
def get_Sunday(): return 'Sunday' def get_Monday(): return 'Mnoday' def get_Tuesday(): return 'Tuesday' # 返回字符串常量 def get_default(): return 'Unkown' # 使用字典代替switch语句 day = 2 switcher = { 0 : get_Sunday, # key对应的value,不仅仅是字符串,还可以是function类型 1 : 'Monday', 2 : 'Tuesday' } # 比switch语句,简洁,可读性强 # 使用get函数,若dict中包含输入参数key,则返回对应的value,否则返回默认值 day_name = switcher.get(day, get_default) # ()代表执行函数 if hasattr(day_name, '__call__'): # 判断对象是否为function, 建议默认值,也使用方法 print(day_name()) else: print(day_name) # print(day_name) # print(type(day_name))
列表推导式
功能相同方法
for in循环 map函数
根据已有的列表,创建新的列表
类似数学中的 《集合推导式》
简洁代码
不仅限于对list进行推导,也可以包含set tuple str dict数据结构
语法示例
a = [1, 2, 3, 4, 5, 6, 7, 8] # 根据变量a,创建一个新的变量b,在a列表中的每个元素,进行平方运算
具有Python风格特色的列表推导式
b = [i**2 for i in a]
print(b)
- ###### 场景示例,加入条件判断
```python
a = [1, 2, 3, 4, 5, 6, 7, 8]
# 根据变量a,创建一个新的变量b,在a列表中的每个元素,进行平方运算
# 场景示例,选择性改变元素
# 加入条件判断进入,列表推导式中
b = [i**3 for i in a if i >= 5]
print(b)
str推导式
# str推导式 x = '1, 2, 3, 4, 5, 6, 7, 8' # 使用字符串中的有序元素,赋予对应的value,组成dict xs = {y:1 for y in x} print(xs)
Tuple推导式
# tuple推导式 Apple = (1, 2, 3, 4, 5) Orange = (x for x in Apple if x == 3) print(Orange) # 打印出对象,因为tuple为不可变 for orange in Orange: print(orange)
Dict推导式
# dict推导式 students = { '石小乐': 18, '王小明': 16, '李飞飞': 17 } # 实际使用两个参数,去解包dict,可进行颠倒key,value,或取出其中某个值 # 解包需要调用内置items函数,返回的值,在tuple中不能直接使用 student = {value: key for key, value in students.items()} print(student)