python推导和枚举
推导后加:
求 m,n中各个元素的乘积:
m = [[1,2,3],[4,5,6],[7,8,9]]
n = [[2,2,2],[3,3,3],[4,4,4]]
通过元素下标 获取各个数据
for i in range(len(m)):
for j in range(len(m[i])):
print(m[i][j]*n[i][j],end=' ')
m = [[1,2,3],[4,5,6],[7,8,9]]
n = [[2,2,2],[3,3,3],[4,4,4]]
通过元素下标 获取各个数据
for i in range(len(m)):
for j in range(len(m[i])):
print(m[i][j]*n[i][j],end=' ')
如图:
更简单:
一:
s = [m[i][j]*n[i][j] for i in range(len(m)) for j in range(len(m[i]))]
print(s)
如图:
二: 加几个中括号:
s1 = [[m[row][col]*n[row][col] for col in range(len(m[row]))] for row in range(len(m))]
print(s1)
如图:
把‘row’和‘col’换成 i 和 j:
s2=[[m[i][j]*n[i][j] for j in range(len(m[i]))] for i in range(len(m))]
print(s2)
如图:
小知识:
m = [[1,2,3],[4,5,6],[7,8,9]]
n = [[2,2,2],[3,3,3],[4,4,4]]
s3=[[m[i][j]*n[i][j] for i in range(len(m[j]))] for j in range(len(m))]
print(s3)
如图:
即:i=0,的时候,m[i][j]= 1,4,7 n[i][j]=2,3,4
结合两个列表的元素,如果元素之间不相等的话:
a = [1,2,3]
b = [3,1,4]
c = [2,5,4]
for i in a:
for j in b:
for k in c:
if i!=j and j!=k and i!=k:
print((i,j,k),end=' ')
print()
a = [1,2,3]
b = [3,1,4]
c = [2,5,4]
for i in a:
for j in b:
for k in c:
if i!=j and j!=k and i!=k:
print((i,j,k),end=' ')
print()
如图:
# 更简单:
print([(i,j,k) for i in a for j in b for k in c if i!=j and j!=k and i!=k])
0--9各个数的2次方:
print([(x,x**2) for x in range(10) ])
print([(x,x**2) for x in range(10) ])
如图:

创建枚举,先导入模块。
from enum import Enum
class color(Enum):
'''
对于一些即定的值 不允许随意赋值的量
每个成员的数据类型就是它所属的枚举
自定义的类/枚举 又叫自定义数据类型
'''
red = 1
orange = 2
yellow = 3
green = 4
blue = 5
indigo = 6
purple = 7
代码分析:
1.上面的代码,我们定义了颜色的枚举Color.
2.颜色枚举有7个成员,分别是Color.red、Color.orange、Color.yellow等。
3.每一个成员都有它们各自名称和值,Color.red成员的名称是:red,值是:1。
4.每个成员的数据类型就是它所属的枚举。【*注:用class定义的类,实际上就是一种类型】
用值来找名字:
print(color(1))
print(color(3))
from enum import Enum
class color(Enum):
'''
对于一些即定的值 不允许随意赋值的量
每个成员的数据类型就是它所属的枚举
自定义的类/枚举 又叫自定义数据类型
'''
red = 1
orange = 2
yellow = 3
green = 4
blue = 5
indigo = 6
purple = 7
代码分析:
1.上面的代码,我们定义了颜色的枚举Color.
2.颜色枚举有7个成员,分别是Color.red、Color.orange、Color.yellow等。
3.每一个成员都有它们各自名称和值,Color.red成员的名称是:red,值是:1。
4.每个成员的数据类型就是它所属的枚举。【*注:用class定义的类,实际上就是一种类型】
用值来找名字:
print(color(1))
print(color(3))
如图:
用名字找值:
print(color.blue.value)
如图:
默认情况下:不同的成员值允许相同。
但是两个相同值的成员,第二个成员的名称被视作第一个成员的别名.
from enum import Enum
class Color(Enum):
red = 1
red_alias = 1
print(Color(1))
如图:
限制定义枚举时,不能定义相同值的成员。可以使用装饰器@unique。
from enum import Enum, unique
@unique
class color(Enum):
red = 1
red_alias = 1
print(color(1))
即:报错抛异常
如图:
创建 生成一个枚举数:
from enum import Enum
class color(Enum):
red = 1
red_reia=1
orange = 2
yellow = 3
green = 4
blue = 5
indigo = 6
purple = 7
co=color['purple']
print('枚举数据名字',co.name)
print('枚举数据的值',co.value)
from enum import Enum
class color(Enum):
red = 1
red_reia=1
orange = 2
yellow = 3
green = 4
blue = 5
indigo = 6
purple = 7
co=color['purple']
print('枚举数据名字',co.name)
print('枚举数据的值',co.value)
如图:
遍历有多少个颜色:
for c in color:
print(c,end=' ')
如图:
判断值是否相等:
print(color.red == color.red_reia)
print(color.red is color.red_reia)
print(color.red is not color.red_reia)
如图:
即:相等:True 不相等:False
数据类型:
print(type(color.red.value))
print(type(color.red.value))
如图:
完毕!