• 【python基础(三)】操作列表:for循环、正确缩进、切片的使用、元组


    一. 遍历整个列表

    if __name__ == '__main__':
        magicians = ['alice', 'david', 'carolina']
        for magician in magicians:
            print(magician)
    
    • 1
    • 2
    • 3
    • 4

     

    1. 在for循环中执行更多操作

    if __name__ == '__main__':
        magicians = ['alice', 'david', 'carolina']
        for magician in magicians:
            print(f"{magician.title()}, that was a great trick")
            
    
    • 1
    • 2
    • 3
    • 4
    • 5

     

    2. 在for循环结束后执行一些操作

    在for循环后面,没有缩进的代码都只执行一次,不会重复执行。

    if __name__ == '__main__':
        magicians = ['alice', 'david', 'carolina']
        for magician in magicians:
            print(f"{magician.title()}, that was a great trick")
        print("Thank you。")
    
    • 1
    • 2
    • 3
    • 4
    • 5

     

    二. 避免缩进错误

    Python根据缩进来判断代码行与前一个代码行的关系。

    简单地说,它要求你使用缩进让代码整洁而结构清晰。在较长的Python程序中,你将看到缩进程度各不相同的代码块,从而对程序的组织结构有大致的认识。

    下面来看一些较为常见的缩进错误。

    忘记缩进
    对于位于for语句后面且属于循环组成部分的代码行,一定要缩进。

    忘记缩进额外的代码行:

      magicians = ['alice', 'david', 'carolina']
      for magician in magicians:
          print(f"{magician.title()}, that was a great trick!")
      print(f"I can't wait to see your next trick, {magician.title()}.\n") # 也需要进行缩进
    
    • 1
    • 2
    • 3
    • 4

     
    不必要的缩进
    函数调用print()(见❶)无须缩进,因为它并非循环的组成部分。

      message = "Hello Python world!"print(message)
    
    • 1
    • 2

    在这里插入图片描述
     
    遗漏了冒号
    for语句末尾的冒号告诉Python,下一行是循环的第一行。

      magicians = ['alice', 'david', 'carolina']for magician in magicians
          print(magician)
    
    • 1
    • 2
    • 3

    如果不小心遗漏了冒号,如❶所示,将导致语法错误,因为Python不知道你意欲何为。

     

    三. 创建数值列表

    1. 使用函数range()

    for value in range(1, 5):
        print(value)
    
    • 1
    • 2

    它不会打印5,只有1到4。

     

    2. 使用range()创建数字列表

    要创建数字列表,可使用函数list()将range()的结果直接转换为列表。

    numbers = list(range(1, 6))
    print(numbers)
    
    • 1
    • 2

     

    3. 指定步长。

    为此,可给这个函数指定第三个参数,看一个例子:
    打印1~10的偶数:

    even_numbers = list(range(2, 11, 2))
    print(even_numbers)
    
    • 1
    • 2

     
    创建一个列表,其中包含前10个整数(1~10)的平方

      squares = []
      for value in range(1,11):
    ❶     squares.append(value**2)
    
      print(squares)
    
    • 1
    • 2
    • 3
    • 4
    • 5

     

    4. 对数字列表执行简单的统计计算

    最小、最大、总和。

    >>> 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

    本节使用的数字列表都很短,但这里介绍的知识也适用于包含数百万个数的列表。

     

    5. 列表解析

    列表解析将for循环和创建新元素的代码合并成一行,并自动附加新元素

    squares = [value**2 for value in range(1, 11)]
    print(squares)
    
    • 1
    • 2

     

    五. 使用列表的一部分-切片

    处理列表的部分元素,Python称之为切片。

    1. 切片

    要创建切片,可指定要使用的第一个元素和最后一个元素的索引。与函数range()一样,Python在到达第二个索引之前的元素后停止。

      players = ['charles', 'martina', 'michael', 'florence', 'eli']print(players[0:3])
    
    # ['charles', 'martina', 'michael']
    
    • 1
    • 2
    • 3
    • 4

    如果没有指定第一个索引,Python将自动从列表开头开始:

    players = ['charles', 'martina', 'michael', 'florence', 'eli']
    print(players[:4])
    
    • 1
    • 2

    如果要提取从第三个元素到列表末尾的所有元素,可将起始索引指定为2,并省略终止索引:

    players = ['charles', 'martina', 'michael', 'florence', 'eli']
    print(players[2:])
    
    • 1
    • 2

    如果要输出名单上的最后三名队员,可使用切片players[-3:]:

    players = ['charles', 'martina', 'michael', 'florence', 'eli']
    print(players[-3:])
    
    • 1
    • 2

     

    2. 遍历切片

    遍历前三名队员,并打印他们的名字:

      players = ['charles', 'martina', 'michael', 'florence', 'eli']
    
      print("Here are the first three players on my team:")for player in players[:3]:
          print(player.title())
    
    • 1
    • 2
    • 3
    • 4
    • 5

     

    3. 复制列表(浅拷贝与深拷贝)

    要复制列表,可创建一个包含整个列表的切片,方法是同时省略起始索引和终止索引([:])。

    ❶ my_foods = ['pizza', 'falafel', 'carrot cake']
    ❷ friend_foods = my_foods[:]
    
      print("My favorite foods are:")
      print(my_foods)
    
      print("\nMy friend's favorite foods are:")
      print(friend_foods)
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8

    如果只是将my_foods赋给friend_foods,就不能得到两个列表。

      my_foods = ['pizza', 'falafel', 'carrot cake']
    
      # 这行不通:
    ❶ friend_foods = my_foods
    
      my_foods.append('cannoli')
      friend_foods.append('ice cream')
    
      print("My favorite foods are:")
      print(my_foods)
    
      print("\nMy friend's favorite foods are:")
      print(friend_foods)
      
      
      # My favorite foods are:
    # ['pizza', 'falafel', 'carrot cake', 'cannoli', 'ice cream']
    
    # My friend's favorite foods are:
    # ['pizza', 'falafel', 'carrot cake', 'cannoli', 'ice cream']
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20

    这种语法实际上是让Python将新变量friend_foods关联到已与my_foods相关联的列表,因此这两个变量指向同一个列表。类似于浅拷贝。

     

    4. 元组

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

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

    ❶ dimensions = (200, 50)print(dimensions[0])
      print(dimensions[1])
    
    • 1
    • 2
    • 3
    dimensions = (200, 50)
    for dimension in dimensions:
        print(dimension)
    
    • 1
    • 2
    • 3

    虽然不能修改元组的元素,但可以给存储元组的变量赋值。因此,如果要修改前述矩形的尺寸,可重新定义整个元组:

    ❶ 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

    如果需要存储的一组值在程序的整个生命周期内都不变,就可以使用元组。

     

    参考:《Python编程:从入门到实践(第二版)》

  • 相关阅读:
    高效备考2025年AMC8数学竞赛:2000-2024年AMC8真题练一练
    []==![]结果为true,探究 == 本质
    你的系统如何支撑高并发?大佬手写高并发架构设计笔记帮你圆满回答!
    前端程序员编码规范必备
    CAPL中的键值对(hash)数据类型
    redis 启动,关闭,查看状态
    【SVN】
    Flutter开发- iOS 问题CocoaPods not installed or not in valid state
    c 读取音频协议WAV文件头(再生成wav文件)
    APS计划排程结果的量化评价
  • 原文地址:https://blog.csdn.net/hiliang521/article/details/134564769