乍一看到列表推导式你可能会感到疑惑。它们是一种创建和使用列表的简洁方式。理解列表推导式是有用的,因为你可能在其他人的代码里看到列表推导式。下面来了解下列表推导式吧。
数字列表的推导式
回顾之前学过的知识,我们可以创建一个包含前10个数字的列表,如下所示:
1
2
3
4
5
6
|
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 参数,简化代码。使用列表推导式就可以进一步简化代码,如下所示:
1
2
3
|
squares = [number * * 2 for number in range ( 1 , 11 )]
for square in squares:
print (square)
|
平方操作和生成新列表的过程都浓缩进了一行代码。你是不是已经晕头转向了,让我们来看看这行代码发生了什么。
首先我们定义了一个列表,名字为 squares 。
接下来看看列表中括号中的代码:
1
|
for number in range ( 1 , 11 )
|
它在1-10之间创建一个循环,把每个数字存储到变量 number 中。接下来我们看一看对每次循环中的 number 作了哪些操作。
number**2
每个 number 都作了平方操作,并将结果存储在了定义好的队列中。我们可以用如下语言来阅读这行代码:
1
|
squares = [ raise number to the second power, for each number in the range 1 - 10 ]
|
其他例子
上个例子是对数字作平方操作,下列代码是对数字作乘操作,仔细阅读代码,体会数字列表表达式的用法。
1
2
3
4
5
6
7
8
|
# 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)
|
非数字列表的推导式
我们也可以在非数字列表中运用推导式。在下面的例子中,我们会创建一个非数字列表,然后利用推导式生成一个新的列表。不运用推导式的源代码如下所示:
1
2
3
4
5
6
7
8
9
|
# 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]
代码如下所示:
1
2
3
4
5
6
7
|
# 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以内
首先考虑一下正常情况我们应该怎么写
1
2
3
|
a = []
for x in range ( 1 , 100 , 3 ):
a.append([x,x + 1 ,x + 2 ])
|
然后再把它转换成列表推导式
1
|
a = [[x,x + 1 ,x + 2 ] for x in range ( 1 , 100 , 3 )]
|
以上就是什么是python的列表推导式的详细内容,更多关于python列表推导式的含义及用法的资料请关注服务器之家其它相关文章!
原文链接:https://www.py.cn/jishu/jichu/10341.html