“ 本文通过几个简单的示例,各种推导式的写法Python中枚举的意义以及指出了使用枚举类型过程中可能出现的错误,适合新手学习,老手复习使用。”
PS:实战型选手移步文末总结,快速应用高级编程技巧!
- 博主每篇文章的注释都是干货!每个代码段都有详细注释,一定要认真看注释!!!
- 重要的事情说三遍:一定要看注释!!!一定要看注释!!!一定要看注释!!!
推导式 列表推导式
-
核心:简化代码
-
示例:生成列表[1,4,9,16]
# 生成一个1,2,3.4平方的列表[1,4,9,16]
# 循环写法
lis = []
for i in range(1, 5): # Python基础:使用in range(1,5)不包括5,且range(5)由0开始
lis.append(i ** 2)
print(lis)
# 推导式写法
lis = [i ** 2 for i in range(1, 5)] # for 后表示i进行的循环
print(lis)
-
添加条件:仅生成偶数列表[4,16]
# 仅生成偶数列表[4,16]
# 循环写法
lis = []
for i in range(1, 5):
if i % 2 == 0:
lis.append(i ** 2)
print(lis)
# 推导式写法
lis = [i ** 2 for i in range(1, 5) if i % 2 == 0] # if判断直接加在for后
print(lis)
- 推导式生成字符列表:['h', 'e', 'l', 'l', 'o']
lis = [i for i in 'hello'] # Python基础知识:Python中字符串也是序列
print(lis)
- 多重循环:for后跟for
# 多重循环
lis = [i+j for i in 'abc' for j in '12'] # for后跟for
print(lis)
- 多重循环+条件限制:最后添加if
# 多重循环
lis = [i + j for i in 'abc' for j in '12' if i + j != 'c2'] # 除去c2
print(lis)
元组推导式
-
[]改为tuple(),其余 *** 作同列表推导式
-
元组:元素不可修改
# 元组推导式
lis = tuple(i for i in 'abc') # []换成tuple()
print(lis)
字典推导式
- {key:value 语句},示例:{2:4,3:9,4:16}
# 字典推导式示例:{2:4, 3:9, 4:16}
lis = {x: x**2 for x in range(2,5)}
print(lis)
集合推导式
- 集合特点:无序、不重复、可修改
- 因为集合不重复,所以 'loop' 输出字母仅包含l、o、p
# 集合推导式:不重复+无序
lis = {x for x in 'loop'}
print(lis)
枚举类型 基础
- 特点:可读性高、防止修改、防止重复(名重复、值重复)
- 枚举元素:名+值
- 枚举示例:
- 一定要认真看注释!!!
from enum import Enum # 导入枚举包
class Price(Enum): # 继承父类:Enum,类下元素不可修改,防重复
apple = 5 # 定义枚举的元素,枚举元素名为apple,枚举元素值为7
banana = 6
orange = 7
print(Price.apple) # 打印枚举元素:苹果
print(type(Price.apple)) # 打印类型是个enum元素
print('--------------------')
# 枚举元素 = 名+值
print(Price.apple.name) # 打印枚举元素名
print(Price.apple.value) # 打枚举元素元素值
print('--------------------')
print(Price['banana']) # 打印名为banana的枚举元素
print(Price(6)) # 打印值为6的枚举元素
print('--------------------')
- 结果
- 枚举名不可重复,枚举元素值一般不可修改
- 一定要认真看注释!!!
# 不可重复性、不可修改性
class Price(Enum):
apple = 5
apple = 999 # 报错,不可重复
banana = 6
orange = 7
Price.apple = 1 # 报错,不可修改
# 代码无法运行,因为枚举名不可重复+枚举值一般不可修改(装饰器可以unique)
枚举类型值重复问题
- 遍历打印枚举元素,值重复只显示第一个枚举元素名
- Classname.__members__遍历打印所有枚举元素值
- 一定要认真看注释!!!
# 枚举元素的遍历,值重复只打印第一个
for i in Price:
print(i)
print('--------------------')
# 使用__members__打印可打印出所有枚举元素名
for i in Price.__members__:
print(i)
- IntEnum枚举值必须是整型,StrEnum,枚举值必须是字符串
- @unique装饰器设定值唯一性,枚举元素值必须唯一
from enum import IntEnum, unique
@unique
class Price(IntEnum):
apple = 5
banana = 6
orange = 7
总结
推导式:
- 列表推导式
- 示例(条件+多重循环):lis = [i + j for i in 'abc' for j in '12' if i + j != 'c2']
- 元组推导式
- 示例:lis = tuple(i for i in 'abc') # []换成tuple()
- 字典推导式
- 示例:lis = {x: x**2 for x in range(2,5)}
- 集合推导式
- 示例:lis = {x for x in 'loop'} # 集合不重复性,输出仅含l、o、p
枚举类型:
- 可读性高、防止修改、防止重复(名重复、值重复)
- 枚举名不可重复,枚举元素值一般不可修改
- 不同枚举元素值重复,打印要用特殊语句,否则只显示第一个枚举元素名
- @unique,IntEnum,StrEnum的特殊用法
💗 “问:何为少年?答:从不缺乏从头再来的勇气、敢于明知不可为而为之——即是少年”
——Created By 是羽十八ya
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)