美文网首页
Python 基础知识全篇-列表推导式

Python 基础知识全篇-列表推导式

作者: BABYMISS | 来源:发表于2020-05-20 19:39 被阅读0次

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

    数字列表的推导式

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

    # Store the first ten square numbers in a list.

    # Make an empty list that will hold our square numbers.

    squares = []

    # Go through the first ten numbers, square them, and add them to our list.

    for number in range(1,11):

        new_square = number**2

        squares.append(new_square)

    # Show that our list is correct.

    for square in squares:

        print(square)

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

    # Store the first ten square numbers in a list.

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

    # Show that our list is correct.

    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)

    简化后代码如下所示:

    # Make a list of the first ten even numbers.

    evens = [number*2 for number in range(1,11)]

    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)

    动手试一试

    如果你已经理解了列表推导式,就用推导式解决下列问题。如果没有,就使用常规代码来做,当你做的多了,就会对列表推导式有更深刻的理解。

    Multiples of Ten

    生成一个包含前10个数字的10倍大小的数字列表(10,20,30,40,50,60,70,80,90,100),尝试使用列表推导式。

    Cubes

    我们已经看到如何生成前10个数字的平方数列表。接下来生成它们的立方数列表吧!

    Awesomeness

    生成一个包含5个名字的列表,利用列表表达式生成一个新的列表,此列表为每个名字添加了一条 “is awesome” 语句。

    Working Backwards

    在不使用列表推导式的前提下,写出下列伪代码对应的代码。 plus_thirteen = [number + 13 for number in range(1,11)]

    # Ex : Multiples of Ten

    # put your code here

    # Ex : Cubes

    # put your code here

    # Ex : Awesomeness

    # put your code here

    # Ex : Working Backwards

    # put your code here

    相关文章

      网友评论

          本文标题:Python 基础知识全篇-列表推导式

          本文链接:https://www.haomeiwen.com/subject/ecxoohtx.html