心妍 发表于 2023-3-9 13:29:29

列表推导式-Python

# 列表推导式可以使用复杂的表达式和嵌套函数
from math import pi
print()
# 普通的列表推导式
list1 =
print(list1)
# 嵌套的列表推导式
# 列表推导式中的初始推导式可以是任何表达式 甚至可以是另外的列表推导式
list2 = [ for y in range(3)]
print(list2)
# 现在 先定义一个3x4的矩阵 由三个长度为四的列表组成

n = [
    ,
    ,
   
]

# 用列表推导式将n里面所有的元素给遍历 items1和items2这两者保存的值是一样的是相等的
items1 = for row in n for i in range(4)]
items2 =
print(items1)
print(items2)
print(n)
# 转置列表的行列 之前是 [, , ] 这种样子 现在变成这种 [,,,] 样子
# 在 for row in n for i in range(4)] 中 首先 for循环遍历行 然后遍历列所对应的索引 列表推导式生成的数字的顺序和原始列表的数字的顺序是一样的
# 我们遍历列表中的所有行的其中某一列 先用for循环遍历可迭代对象range 每次遍历可迭代对象range 变量i都会更新值 可迭代对象range的范围是列表中的行的长度
# 然后再遍历行 每次遍历行 都会产生行中的某一列 也可以这样说 先遍历行中某一列所对应的索引 然后再遍历每一行 生成的值是每一行中的某一列 在列表推导式中 前面的
# 表达式基于后面的for循环求值 我们改写 for row in n for i in range(4)] 使其变成 [ for row in n] for i in range(4)] 这样 就可以转置行列了
# 感觉有点难以表述 在n中 有3个列表 每个列表的长度为4 每个列表有4个元素 3个列表的元素数目是相等的 用for循环遍历range可迭代对象 使其产生的数字序列中的数字个数和
# 每个列表中的元素数目相同 而且可迭代对象range每次产生的数字对应列表中的某一列 for i in range(4)的前面是列表推导式 每次产生的列表 其值涵盖每一行中某一列 这个某一列是由i决定的

n = [
    ,
    ,
   
]

items1_1 = [ for row in n] for i in range(4)]
print(items1_1)

# 也可以这样写
list1 = []
for i in range(4):
    list1.append( for j in n])
print(list1)

# 还可以这样写
list1 = []
for i in range(4):
    list2 = []
    for v in n:
      list2.append(v)
    list1.append(list2)

print(list1)
n = [
    ,
    ,
   
]

# Python官方文档应该是这样说的 在实际的应用中 最好用内置函数代替复杂的流程语句 所以在这里 我使用了zip()函数 来完成列表的转置
# zip()函数 将多个序列组成的可迭代对象作为参数 将序列中的元素按照对应的位置重新组合 打包成一个个的元组 然后返回由这些元组组成的列表 具体的返回值是一个对象地址
# *操作符用于将列表拆解 list()函数用于展开列表
print(list((zip(*n))))

[(,), (,), (,)]
[(1, 5, 9), (2, 6, 10), (3, 7, 11)]


LuckyClover 发表于 2023-3-9 23:34:44

进来顶一下,哈哈

乐活 发表于 2023-3-10 09:17:38

这个功能很强大

心妍 发表于 2023-3-10 09:49:52

LuckyClover 发表于 2023-3-9 23:34
进来顶一下,哈哈

非常感谢 嘿嘿{:4_260:}

心妍 发表于 2023-3-10 09:50:30

乐活 发表于 2023-3-10 09:17
这个功能很强大

我本人很少用到这个功能

h576676205 发表于 2023-3-10 13:10:12

充电中,学习了

心妍 发表于 2023-3-10 15:36:56

h576676205 发表于 2023-3-10 13:10
充电中,学习了

要充电 也要放电

飓风861 发表于 2023-3-17 23:36:25

进来学习学习,感谢楼主分享
页: [1]
查看完整版本: 列表推导式-Python