python3列表推导式矩阵转置_python3进阶之推导式1之列表(list)推导式(comprehensions)...

1.前言

推导式,英文名字叫comprehensions,注意与comprehension(理解)只有s字母之差。推导式又可以叫解析式,推导式可以从一种数据序列构建新的数据序列的结构体。推导式分为,列表推导式,字典推导式,嵌套列表推导式,本节介绍列表推导式,其他后续介绍.

2.列表推导式概念

它的结构是在一个中括号里包含一个表达式,然后是一个for语句,然后是0个或多个for或者if语句。那个表达式可以是任意的,意思是你可以在列表中放入任意类型的对象。返回结果将是一个新的列表,是另一个新列表,原列表保持不变。在这个以if和for语句为上下文的表达式运行完成之后产生。

写法模式:[expr for value in collection if condition]

if过滤条件,取决于实际应用是否需要,可有可无

3.实例:

示例1:

#输出30以内被4整除的数,各自加0.5

list1=[i+0.5for i in range(30)if i%4==0]

print(list1)

# [0.5, 4.5, 8.5, 12.5, 16.5, 20.5, 24.5, 28.5]

对比for循环代码为:

list2=[]

for i in range(30):

if i%4==0:

list2.append(i+0.5)

print(list2)

# [0.5, 4.5, 8.5, 12.5, 16.5, 20.5, 24.5, 28.5]

示例2:

# 将列表中长度大于4的字母大写,长度小于或等于4的字母小写

name1= ['Bob','tom','alice','Jerry','Wendy','Smith','liuhu']

name2=[name.upper() for name in name1 if len(name)>4]

print(name2)

name3=[name.lower() for name in name1 if len(name)<=4]

print(name3)

name4=name2.extend(name3)

print(name4)

print(name2)

# ['ALICE', 'JERRY', 'WENDY', 'SMITH', 'LIUHU']

# ['bob', 'tom']

# None

# ['ALICE', 'JERRY', 'WENDY', 'SMITH', 'LIUHU', 'bob', 'tom']

注意:name4为空,写法需要更正

还有更简单的方法,在列表推导式中使用if else语句:

name5= ['Bob','tom','alice','Jerry','Wendy','Smith','liuhu']

name6=[name.upper()if len(name)>4 else name.lower() for name in name5]

print(name6)

# ['bob', 'tom', 'ALICE', 'JERRY', 'WENDY', 'SMITH', 'LIUHU']

示例3:

# 与zip结合

a = [ -6, -7, -8, -9, -10]

b = [1, 2, 3, 4, 5]

xy = [[x, y] for x, y in zip(a, b)]

print(xy)

# [[-6, 1], [-7, 2], [-8, 3], [-9, 4], [-10, 5]]

示例4:

# 支持多层for循环,将一个嵌套列表转换成一个一维列表。

a = [[1, 2, 3], [4, 5, 6], [7, 8, 9]]

b = [j for i in a for j in i]

print(b)

# [1, 2, 3, 4, 5, 6, 7, 8, 9]

示例5:

m,n中矩阵元素的乘积玩法;

m = [[1,2,3],[4,5,6],[7,8,9]]

n = [[2,2,2],[3,3,3],[4,4,4]]

# 矩阵行与行相乘

hc=[m[row][col]*n[row][col] for row in range(3) for col in range(3)]

print(hc)

# [2, 4, 6, 12, 15, 18, 28, 32, 36]

# 矩阵相乘

jc=[[m[row][col]*n[row][col] for col in range(3)] for row in range(3)]

print(jc)

# [[2, 4, 6], [12, 15, 18], [28, 32, 36]]

# 矩阵列与列乘

lc=[[m[row][col]*n[row][col] for row in range(3)] for col in range(3)]

print(lc)

# [[2, 12, 28], [4, 15, 32], [6, 18, 36]]

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值