• 【Python】《Python编程:从入门到实践 (第2版) 》笔记-Chapter4-操作列表


    四、操作列表
    1. 使用for循环遍历整个列表
    magicians = ['alice', 'david', 'carolina']
    for magician in magicians:
        print(magician)
        print(f"I can't wait to see your next trick, {magician.title()}.\n")
    
    • 1
    • 2
    • 3
    • 4
    • 在for 循环中,想包含多少行代码都可以。在代码行for magician in magicians后面,每个缩进的代码行都是循环的一部分,将针对列表中的每个值都执行一次。
    1. Python根据缩进来判断代码行与前一个代码行的关系。如果你不小心缩进了无须缩进的代码行,Python将指出这一点。

    2. for语句末尾的冒号告诉Python,下一行是循环的第一行。如果不小心遗漏了冒号,将导致语法错误。

    3. 列表非常适合用于存储数字集合,而Python提供了很多工具,可帮助你高效地处理数字列表。

    4. Python函数range()让你能够轻松地生成一系列数。

    for value in range(1, 5): 
        print(value)
    
    1
    2
    3
    4
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 函数range()让Python从指定的第一个值开始数,并在到达你指定的第二个值时停止。因为它在第二个值处停止,所以输出不包含该值(这里为5)。
    • 调用函数range()时,也可只指定一个参数,这样它将从0开始。例如,range(6)返回数0~5。
    1. 要创建数字列表,可使用函数list()将range()的结果直接转换为列表。如果将range()作为list()的参数,输出将是一个数字列表。
    numbers = list(range(1, 6)) 
    print(numbers)                  // [1, 2, 3, 4, 5]
    
    // 在这个示例中,函数range()从2开始数,然后不断加2,直到达到或超过终值
    even_numbers = list(range(2, 11, 2))
    print(even_numbers)             // [2, 4, 6, 8, 10]
    
    // 创建一个列表,其中包含前10个整数(1~10)的平方
    squares = []
    for value in range(1, 11):
    	square = value ** 2
    	squares.append(square)
    print(squares)      // [1, 4, 9, 16, 25, 36, 49, 64, 81, 100]
    
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 使用函数range()时,还可指定步长。为此,可给这个函数指定第三个参数,Python将根据这个步长来生成数。
    1. 有几个专门用于处理数字列表的Python函数。
    >>> digits = [1, 2, 3, 4, 5, 6, 7, 8, 9, 0]
    >>> min(digits)
    0
    >>> max(digits)
    9
    >>> sum(digits)
    45
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    1. 列表解析将for循环和创建新元素的代码合并成一行,并自动附加新元素。
    squares = [value**2 for value in range(1, 11)] 
    print(squares)      // [1, 4, 9, 16, 25, 36, 49, 64, 81, 100]
    
    • 1
    • 2
    • 要使用这种语法,首先指定一个描述性的列表名,如squares。然后,指定一个左方括号,并定义一个表达式,用于生成要存储到列表中的值。在这个示例中,表达式为value**2,它计算平方值。接下来,编写一个for循环,用于给表达式提供值,再加上右方括号。在这个示例中,for循环为for value in range(1,11),它将值1~10提供给表达式value**2。请注意,这里的for 语句末尾没有冒号
    1. 还可以处理列表的部分元素,Python称之为切片。要创建切片,可指定要使用的第一个元素和最后一个元素的索引。与函数range()一样,Python在到达第二个索引之前的元素后停止。要输出列表中的前三个元素,需要指定索引0和3,这将返回索引为0、1和2的元素。
    players = ['charles', 'martina', 'michael', 'florence', 'eli']
    print(players[0:3])     // ['charles', 'martina', 'michael']
    
    players = ['charles', 'martina', 'michael', 'florence', 'eli'] 
    print(players[:4])      // ['charles', 'martina', 'michael', 'florence']
    
    players = ['charles', 'martina', 'michael', 'florence', 'eli'] 
    print(players[2:])      // ['michael', 'florence', 'eli']
    
    players = ['charles', 'martina', 'michael', 'florence', 'eli'] 
    print(players[-3:])     // ['michael', 'florence', 'eli']
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 如果没有指定第一个索引,Python将自动从列表开头开始。要让切片终止于列表末尾,也可使用类似的语法。
    • 负数索引返回离列表末尾相应距离的元素,因此你可以输出列表末尾的任意切片。
    • 注意 可在表示切片的方括号内指定第三个值。这个值告诉Python在指定范围内每隔多少元素提取一个。
    1. 如果要遍历列表的部分元素,可在for循环中使用切片。
    for player in players[:3]: 
        print(player.title())
    
    • 1
    • 2
    1. 要复制列表,可创建一个包含整个列表的切片,方法是同时省略起始索引和终止索引([:])。这让Python创建一个始于第一个元素、终止于最后一个元素的切片,即整个列表的副本。
    my_foods = ['pizza', 'falafel', 'carrot cake']
    friend_foods = my_foods[:]
    
    friend_foods.append('ice cream')
    
    # 这行不通:
    friend_foods = my_foods
    my_foods.append('cannoli')
    friend_foods.append('ice cream')
    print(my_foods)     // ['pizza', 'falafel', 'carrot cake', 'cannoli', 'ice cream']
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 如果只是将my_foods 赋给friend_foods,就不能得到两个列表。这里将my_foods赋给friend_foods,而不是将my_foods的副本赋给friend_foods。这种语法实际上是让Python将新变量friend_foods关联到已与my_foods相关联的列表,因此这两个变量指向同一个列表。
    1. 列表非常适合用于存储在程序运行期间可能变化的数据集。

    2. Python将不能修改的值称为不可变的,而不可变的列表被称为元组。

    3. 元组看起来很像列表,但使用圆括号而非中括号来标识。定义元组后,就可使用索引来访问其元素,就像访问列表元素一样。

    dimensions = (200, 50)
    print(dimensions[0]) 
    print(dimensions[1])
    
    my_t = (3,)
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 严格地说,元组是由逗号标识的,圆括号只是让元组看起来更整洁、更清晰。如果你要定义只包含一个元素的元组,必须在这个元素后面加上逗号。
    • 创建只包含一个元素的元组通常没有意义,但自动生成的元组有可能只有一个元素。
    1. 像列表一样,也可以使用for循环来遍历元组中的所有值。
    dimensions = (200, 50)
    for dimension in dimensions: 
        print(dimension)
    
    • 1
    • 2
    • 3
    1. 虽然不能修改元组的元素,但可以给存储元组的变量赋值。
    dimensions = (200, 50)
    print("Original dimensions:") 
    for dimension in dimensions:
        print(dimension)
    
    dimensions = (400, 100)
    print("\nModified dimensions:") 
    for dimension in dimensions:
        print(dimension)
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 给元组变量重新赋值是合法的。
    1. 如果需要存储的一组值在程序的整个生命周期内都不变,就可以使用元组。

    2. 要提出Python语言修改建议,需要编写Python改进提案(Python Enhancement Proposal,PEP)。PEP 8是最古老的PEP之一,向Python程序员提供了代码格式设置指南。

    • PEP 8建议每级缩进都使用四个空格(并非制表符)。
    • 很多Python程序员建议每行不超过80字符。
    • PEP 8还建议注释的行长不应超过72字符,因为有些工具为大型项目自动生成文档时,会在每行注释开头添加格式化字符。
    • 要将程序的不同部分分开,可使用空行。
  • 相关阅读:
    如何找回删除的文件?挺高的恢复率!
    go基础语法50问,来看看你的go基础合格了吗?
    用趋动云GPU部署自己的Stable Diffusion
    gitlab与github 密钥冲突
    回归问题原理
    leetcode 3. 无重复字符的最长子串
    锚点链接啊啊
    【机器学习 | Python】mlxtend 包的使用指南
    java ThreadPoolExecutor怎么设置队列不满也能达到最大线程池大小
    【Springcloud Ribbon】负载均衡
  • 原文地址:https://blog.csdn.net/github_38647413/article/details/128172677