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=' ')
如图:

更简单:
一:
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()
如图:

# 更简单:

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) ])
如图:


创建枚举 ,先导入模块。
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)
如图:

遍历有多少个颜色:
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))
如图:

完毕!

猜你喜欢

转载自blog.csdn.net/angelayouran/article/details/80457794