列表的基础使用

列表——list

1. 列表是什么

  • 定义:列表是由一系列按特定顺序排列的元素组成,用 [ ] 来标识

  • 语法格式:listname = [ele1, ele2, ele3, .....]

    e.g
    # 创建一个字母列表
    letters = ['a', 'b', 'c', 'd']
    # 也可以创建一个空的列表
    letter = []
    
  • 列表是有序的集合,因此要访问列表的任何元素,只需将该元素的位置或索引告诉Python即可

  • 索引是从0开始,最后一个列表元素索引为-1,因此可以在不知道列表长度时,访问最后的元素

    # 打印字母列表中的第一个元素
    print(letters[0])
    #对列表中字符串类型
    #首字母大写
    letters[0].title()
    #全部大写
    letters[0].upper()
    #全部小写
    letters[0].lower()
    # 打印整个列表
    print(letters)
    
  • 使用+可以将的字符串类型进行拼接

2. 修改、添加、删除元素

  • 追加:listname.append(data)

    ​ listname += [.....]

  • 插入:listname.insert(index, data)

    注意:insert()方法需要两个参数(take exactly 2 arguments)

  • 替换 :listname[index] = data

  • 删除

    • del(永久删除)

    del listname[index]

    • pop()(按照索引删除)

    listname.pop(index)

    注意:

    如果不指定索引,则默认删除最后一个元素

    • remove()按照值删除

    listname.remove(data)

    注意:

    方法remove()只删除第一个指定的值,如果要删除的值可能在列表中出现多次,就需要使用循环来判断是否删除了所有这样的值

    注意:

    后两种方法可以将删除的某个元素保存到某个变量,继续使用

    3. 对列表进行排序

  • sort()(永久排序)

    • (降序)正向排序

    listname().sort()

    • 反向排序

    加入参数 reverse = True

    listname.sort(reverse = True)

  • sorted(临时排序)

    sorted(listname)

    注意:

    临时排序相当于拷贝一份,显示一次排序结果,但原来列表中的排列顺序并未发生改变

    4. 倒着打印列表

    listname.reverse()

    注意:

    reverse()不是指按与字母顺序相反的顺序排列列表元素,只是反转列表元素

    reverse()永久的修改列表,但再次使用reverse()即可将列表还原

    5. 确定列表的长度

    使用函数 len(listname) 确定列表的长度

    对列表的操作

    • 在游戏中,可能需要将每个界面元素平移相同的距离;
  • 对于包含数字的列表,可能需要对每个元素执行相同的统计运算;

    • 在网站中,可能需要显示文章列表中的每个标题
    • 需要对列表中的每个元素都执行相同的操作时,可使用Python中的for循环

    1. 遍历整个列表

    假设有一个魔术师列表:

    magicians = ['alice', 'david', 'carolina']

    使用for循环来打印魔术师名单中的名字:

    for magician in magicians:

    print(magician)

    解释

    第一行代码让Python从列表magicians中取出一个名字,并将其存储在变量magician中。最后,我们让Python打印前面存储在变量magician中的名字。继续循环,直到列表中没有其他的值了。

    2. 在循环中执行更多的操作

    for magician in magicians:
        print(magician.title() + ', that was a great trick!')
    print('Thank you, everone. That was a great magic show!')
    

    3. 创建数值列表

    在游戏中,需要跟踪每个角色的位置,还可能需要跟踪玩家的几个最高得分。

    在数据可视化中,处理几乎都是由数字(如温度,距离,人口数量,经度和纬度等)组成的集合。

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

    • range()函数(生成一系列数字)

      for value in range(1, 5):
          print(value)
      '''
      打印结果:
      1
      2
      3
      4
      '''
      

      上述代码好像应该打印数字1~5,但实际上它不会打印数字5,函数range()让python从你指定的第一个值开始数,并在到达你指定的第二个值后停止,因此输出不包含第二个值(这里为5)

      *要打印数字1~5,需要使用range(1, 6):

      for value in range(1, 6):
          print(value)
      """
      运行结果:
      1
      2
      3
      4
      5
      """
      
    • 使用range()创建数字列表

      要创建数字列表,可使用函数list()将range()的结果直接转换为列表,如果range()作为list()的参数,输出将为一个数字列表。

      numbers = list(range(1, 6))
      print(numbers)
      """
      运行结果:
      [1, 2, 3, 4, 5]
      """
      

      使用range()时,还可以指定步长

      even_numbers = list(range(2, 11, 2))
      print(even_numbers)
      """
      运行结果:
      [2, 4, 6, 8, 10]
      """
      

      例如,创建一个空列表,其中包含1~10的平方,在python中两个星号(**)代表乘方运算

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

      4.max(),min(),sum()

      digits = [1, 2, 3, 4, 5, 6, 7, 8, 9, 0]
    # 求digits的最大值
      max(digits)
    # 求digits的最小值
      min(digits)
    # 求和
      sum(digits)
    

    5. 列表推导式

    前面介绍的生成列表squares的方式包含三四行代码,而列表推导式让你只需写一行代码就能生成这样的列表。

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

      # 注意:for循环后面没有冒号
      squares = [value**2 for value in range(1, 11)]
      print(squares)
    

    注意:

    要使用这种语法,首先指定一个描述性的列表名,如squares;

    然后,指定一个左方括号,并定义一个表达式,用于生成你要存储到列表中的值。在这个示例中,表达式value**2,它计算平方值。

    接下来,编写一个for循环,用于给表达式提供值,再加上右方括号。

    1. 例如:使用列表推导式通过函数range()指定第三个参数创建一个列表,其中包含1~20的奇数;在使用for循环将这个列表中的数字打印出来
      odd_numbers = [value for value in range(1, 21, 2)]
      print(odd_numbers)
      '''
      运行结果:
      [1, 3, 5, 7, 9, 11, 13, 15, 17, 19]
      '''
    

    6. 使用列表的一部分(切片)

    要使用切片,可指定要使用的第一个元素和最后一个元素的索引

    与函数range()一样,Python在到达你指定的第二个索引出停止,不会打印最后一个元素的索引

    • 切片

      有一个运动员列表:

      players = ['a', 'b', 'c', 'd','e', 'f']
      # 打印第1~第2个元素
      print(players[0:2])
      # 打印第2~第4个元素
      print(players[1:4])
      # 没有指定起始索引,默认从头开始
      print(players[:4])
      # 没有指定末尾索引,默认到结束
      print(players[3:])
      # 打印最后3个元素
      print(players[-3:])
      
      
    • 遍历切片

      如果要遍历列表的部分元素,可在for循环中使用切片

      下面代码没有遍历整个列表,只遍历前三个元素

        players = ['a', 'b', 'c', 'd','e', 'f']
      for player in players[:3]:
            print(player)
      '''
        运行结果:
        a
        b
        c
        '''
      

    在很多情况下,切片都很有用。

    编写游戏时,你可以在玩家退出游戏时将其最终得分加入到一个列表中。然后,为获取该玩家的三个最高分,你可以将列表按降序排列,再创建一个只包含前三个得分的切片。

    处理数据时,可使用切片来进行批量处理

    编写web应用程序时,可使用切片来分页显示信息,并在每页显示数量合适的信息

    • 复制列表

      你经常需要根据既有列表创建全新的列表

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

      my_foods = ['a', 'b', 'c']
      friend_foods = my_foods[:]
      '''
      在不使用切片的情况下,这行不通
      这里将my_foods赋给friend_foods,而不是将my_foods的副本存储到friend_foods
      这里my_foods和friend_foods指向同一个列表
      '''
      friend_foods = my_foods
    
原文地址:https://www.cnblogs.com/rainszj/p/11252664.html