当前位置: 首页 > news >正文

Python:列表推导式

相关阅读

Python专栏icon-default.png?t=N7T8https://blog.csdn.net/weixin_45791458/category_12403403.html?spm=1001.2014.3001.5482


        列表推导式使得创建特定列表的方式更简洁。常见的用法为,对序列或可迭代对象中的每个元素应用某种操作,用生成的结果创建新的列表;或用满足特定条件的元素创建子序列。

        例如,创建平方值的列表: 

squares = []
for x in range(10):squares.append(x**2)print(squares)
print(x)
[0, 1, 4, 9, 16, 25, 36, 49, 64, 81]
9

        注意,这段代码创建(或覆盖)变量 x,该变量在循环结束后仍然存在,可以从代码中看到x的最终值是9。

        下述方法可以无副作用地计算平方列表,使用了lambda表达式和map函数:

squares = list(map(lambda x: x**2, range(10)))

        或者可以更简洁和易读地使用列表推导式:

squares = [x**2 for x in range(10)]

        列表推导式的方括号内包含以下内容:一个表达式,后面为一个 for子句,然后,是零个或多个 for 或 if 子句。结果是由表达式依据 for 和 if 子句求值计算而得出一个新列表。 举例来说,以下列表推导式将两个列表中不相等的元素组合起来:

[(x, y) for x in [1,2,3] for y in [3,1,4] if x != y][(1, 3), (1, 4), (2, 3), (2, 1), (2, 4), (3, 1), (3, 4)]

        以上的复合列表推导式等价于:

combs = []
for x in [1,2,3]:for y in [3,1,4]:if x != y:combs.append((x, y))

        注意,上面两段代码中,for 和 if 的顺序相同。

        表达式是元组(例如上例的(x, y))或列表(例如[x, y])时,必须加上括号,即以下语句会报错。

[x, x**2 for x in range(6)] #错误用法
SyntaxError: did you forget parentheses around the comprehension target?[(x, x**2) for x in range(6)] #正确用法
[[x, x**2] for x in range(6)] #正确用法

http://www.lryc.cn/news/151556.html

相关文章:

  • 应急三维电子沙盘数字孪生系统
  • LeetCode每日一题:1654. 到家的最少跳跃次数(2023.8.30 C++)
  • 数据结构例题代码及其讲解-栈与队列
  • 【Spark】Pyspark RDD
  • 数学建模:Logistic回归预测
  • 一个面向MCU的小型前后台系统
  • 软件外包开发人员分类
  • HTML 元素被定义为块级元素或内联元素
  • 单调递增的数字【贪心算法】
  • gnuradio-hackrf_info.exe -FM频率使用
  • JVM学习(三)--生产环境的线程问题诊断
  • PHP数组处理$arr1转换为$arr2
  • ATF(TF-A)安全通告 TFV-10 (CVE-2022-47630)
  • 详解 SpringMVC 中获取请求参数
  • Message: ‘chromedriver‘ executable may have wrong permissions.
  • 每日一题 1372二叉树中的最长交错路径
  • 【力扣每日一题】2023.9.2 最多可以摧毁的敌人城堡数量
  • kotlin实现java的单例模式
  • 使用 KeyValueDiffers 检测Angular 对象的变化
  • Macos 10.13.2安装eclipse
  • Android逆向学习(一)vscode进行android逆向修改并重新打包
  • 【深入浅出设计模式--状态模式】
  • Debezium系列之:Debezium Server在生产环境大规模应用详细的技术方案
  • Echart笔记
  • docker 笔记1
  • HTTP Get 和 Post 的区别
  • C++超级迷宫游戏
  • CUDA小白 - NPP(3) 图像处理 Color and Sampling Conversion
  • Android硬件通信之 串口通信
  • 高防服务器面对DDOS攻击的威胁有何必要性