什么是python的列表推导式

作者:silencement 时间:2023-03-11 03:06:02 

乍一看到列表推导式你可能会感到疑惑。它们是一种创建和使用列表的简洁方式。理解列表推导式是有用的,因为你可能在其他人的代码里看到列表推导式。下面来了解下列表推导式吧。

数字列表的推导式

回顾之前学过的知识,我们可以创建一个包含前10个数字的列表,如下所示:


squares = []
for number in range(1,11):
 new_square = number**2
 squares.append(new_square)
for square in squares:
 print(square)

上述代码中我们实现了创建包含10个数字的列表,对每个数字作平方操作并将它们存储进新的数组的功能。代码略显冗长,我们可以省略 for 循环中的 new_square 参数,简化代码。使用列表推导式就可以进一步简化代码,如下所示:


squares = [number**2 for number in range(1,11)]
for square in squares:
 print(square)

平方操作和生成新列表的过程都浓缩进了一行代码。你是不是已经晕头转向了,让我们来看看这行代码发生了什么。

首先我们定义了一个列表,名字为 squares 。

接下来看看列表中括号中的代码:


for number in range(1, 11)

它在1-10之间创建一个循环,把每个数字存储到变量 number 中。接下来我们看一看对每次循环中的 number 作了哪些操作。

number**2

每个 number 都作了平方操作,并将结果存储在了定义好的队列中。我们可以用如下语言来阅读这行代码:


squares = [raise number to the second power, for each number in the range 1-10]

其他例子

上个例子是对数字作平方操作,下列代码是对数字作乘操作,仔细阅读代码,体会数字列表表达式的用法。


# Make an empty list that will hold the even numbers.
evens = []
# Loop through the numbers 1-10, double each one, and add it to our list.
for number in range(1,11):
 evens.append(number*2)
# Show that our list is correct:
for even in evens:
 print(even)

非数字列表的推导式

我们也可以在非数字列表中运用推导式。在下面的例子中,我们会创建一个非数字列表,然后利用推导式生成一个新的列表。不运用推导式的源代码如下所示:


# Consider some students.
students = ['bernice', 'aaron', 'cody']
# Let's turn them into great students.
great_students = []
for student in students:
 great_students.append(student.title() + " the great!")
# Let's greet each great student.
for great_student in great_students:
 print("Hello, " + great_student)

我们想写下如下所示的推导式:

great_students = [add 'the great' to each student, for each student in the list of students]

代码如下所示:


# Consider some students.
students = ['bernice', 'aaron', 'cody']
# Let's turn them into great students.
great_students = [student.title() + " the great!" for student in students]
# Let's greet each great student.
for great_student in great_students:
 print("Hello, " + great_student)

扩展练习:

生成一个[[1,2,3],[4,5,6]....]的列表最大值在100以内

首先考虑一下正常情况我们应该怎么写


a = []
for x in range(1,100,3):
a.append([x,x+1,x+2])

然后再把它转换成列表推导式


a = [[x,x+1,x+2] for x in range(1,100,3)]

来源:https://www.py.cn/jishu/jichu/10341.html

标签:python,列表推导式
0
投稿

猜你喜欢

  • MySQL数据库入门之多实例配置方法详解

    2024-01-25 14:22:14
  • Python时间差中seconds和total_seconds的区别详解

    2022-10-04 15:00:49
  • 用ASP打造一个小型的网页BBS系统

    2008-10-10 16:36:00
  • 一文详解JSON.parse和JSON.stringify的用法

    2024-04-16 08:45:09
  • 利用Django内置的认证视图实现用户密码重置功能详解

    2023-09-29 18:57:53
  • javascript 跳转代码集合

    2024-04-19 10:42:40
  • Python常问的100个面试问题汇总(下篇)

    2023-09-23 06:30:29
  • python通过txt文件批量安装依赖包的实现步骤

    2022-05-10 23:26:14
  • python设置值及NaN值处理方法

    2022-11-30 01:48:42
  • MySQL复制优点、原理详解

    2024-01-19 04:26:50
  • Python装饰器用法与知识点小结

    2023-11-16 00:45:02
  • 关于前端文件下载各类方式大汇总

    2024-06-13 03:42:01
  • Mac下通过brew安装指定版本的nodejs教程

    2024-05-03 15:56:11
  • 详解SQL Server分布式查询

    2010-09-19 09:07:00
  • 深入学习JavaScript 高阶函数

    2024-04-18 09:30:05
  • python使用PIL实现多张图片垂直合并

    2023-10-28 12:19:45
  • Keras:Unet网络实现多类语义分割方式

    2022-02-26 16:36:49
  • jquery判断单选按钮radio是否选中的方法

    2024-04-19 10:18:25
  • 经典SQL语句大全

    2009-08-26 16:44:00
  • vue中简单弹框dialog的实现方法

    2024-05-21 10:14:57
  • asp之家 网络编程 m.aspxhome.com