Python 列表简单使用

Python列表及元组

一、什么是列表?

  • 列表是由一系列按特定顺序排列 元素组成。
  • 在Python中,用方括号( [ ] )来表示列表,并用逗号分隔其中的元素。

1.1、访问列表元素:

  • 列表是有序集合,因此要访问列表的任何元素,只需将该元素的位置索引告诉Python即可。

    color = ['red', 'green', 'blue', 'black']
    print(color[0])
    # 输出结果 red
    
    • 当你请求获取列表元素时,Python只返回该元素,而不包括方括号引号

    • 返回的是一个字符串类型, 这时候就可以用title()方法:

      color = ['red', 'green', 'blue', 'black']
      print(color[0].title())
      # 输出结果: Red
      

1.2、索引从0而不是1开始:

  • 在Python中,第一个列表元素的索引为0,而不是1

    color = ['red', 'green', 'blue', 'black']
    print(color[0])
    print(color[3])
    # 输出结果: red  black
    
  • Python为访问最后一个列表元素提供了一种特殊语法。通过将索引指定为-1

    color = ['red', 'green', 'blue', 'black']
    print(color[-1])
    # 输出结果: black
    
    • 这种语法很有用,因为你经常需要在不知道列表长度的情况下访问最后的元素。这种约定也适用于其他负数索引,例如,索引-2返回倒数第二个列表元素索引-3返回倒数第三个列表元素以此类推。

1.3、使用列表中各个值:

  • 可像使用其他变量一样使用列表中的各个值。

    color = ['red', 'green', 'blue', 'black']
    message = "My like " + color[0].title()
    print(message)
    # 输出结果: My like Red
    

二、修改、添加和删除元素:

  • 你创建的大多数列表都将是动态的,这意味着列表创建后,将随着程序的运行增删元素
    • 比如:你创建一个游戏,要求玩家射杀从天而降的外星人;为此,可在开始时将一些外星人存储在列表中,然后每当有外星人被射杀时,都将其从列表中删除,而每次有新的外星人出现在屏幕上时,都将其添加到列表中。在整个游戏运行期间,外星人列表的长度不断变化

2.1、修改列表元素:

  • 要修改列表元素,可指定列表名要修改的元素的索引,再指定该元素的新值

    color = ['red', 'green', 'blue', 'black']
    color[0] = 'pink'
    print(color)
    # 输出结果: [u'pink', u'green', u'blue', u'black']  
    
    • 可以看出, 第一个索引对应的值变了,其它的没有改变。

2.2、再列表中添加元素:

1:在列表末尾添加元素:
  • 使用方法append(),就可以实现最简单方式将元素附加到列表末尾。

    color = ['red', 'green', 'blue', 'black']
    color.append('pink')   # append()方法没有返回值
    print(color)
    # 输出结果: [u'red', u'green', u'blue', u'black', u'pink']
    
  • 方法append() 让动态地创建列表易如反掌。

    • 例如,你可以先创建一个空列表,再使用一系列的append() 语句添加元素:

      color = []
      color.append('red')
      color.append('green')
      color.append('blue')
      color.append('pink')
      print(color)
      # 输出结果:[u'red', u'green', u'blue', u'pink']
      
2:在列表插入元素:
  • 使用方法insert() 方法可在列表的任何位置添加新元素,你需要指定新元素的索引

    colors = ['red', 'green', 'blue']
    colors.insert(1, 'black')
    print(colors)
    # 输出结果: [u'red', u'black', u'green', u'blue']
    
    • insert(1,'black')方法: 1就是新元素的在列表中索引的位置,'black’就是值。
    • 这种操作将列表中既有的每个元素都右移一个位置(不包括’red’, 因为它的索引是0,'black’在它的后面)。

2.3、在列表中删除元素:

1:使用del语句删除元素
  • 如果要知道要删除的元素在列表中的位置,可使用del语句:

    colors = ['red', 'green', 'blue']
    del colors[1]  # 使用del 语句 删除colors 列表索引为1的元素
    print(colors)
    # 输出结果:[u'red', u'blue']
    
    • 使用del 可删除任何位置处的列表元素,条件是知道其索引
    • 使用del 语句将值从列表中删除后,你就无法再访问它了
2:使用方法pop()删除元素
  • 方法pop() 可删除列表末尾的元素,并让你能够接着使用它。

    • 列表就像一个栈,而删除列表末尾的元素相当于弹出栈顶元素。
    colors = ['red', 'green', 'blue', 'pink']
    print(colors)
    color = colors.pop()  # 我们从这个列表中弹出一个值,并将其存储到变量color
    print(colors)   # 我们打印这个列表,以核实从其中删除了一个值 
    print(color) # 我们打印弹出的值,以证明我们依然能够访问被删除的值 
    # 输出结果:
    """
    [u'red', u'green', u'blue', u'pink']
    [u'red', u'green', u'blue']
    pink
    """
    
3:弹出列表中任何位置处的元素
  • 可以使用pop()删除列表中任何位置的元素

    colors = ['red', 'green', 'blue', 'pink']
    color = colors.pop(1)  # pop()括号内是列表中的索引位置
    print(colors)
    print(color)
    # 输出结果如下:
    [u'red', u'blue', u'pink']
    green
    
    • 别忘了,每当你使用pop() 时,被弹出的元素就不再在列表中了。
  • 如果你要从列表中删除一个元素,且不再以任何方式使用它,就使用del 语句;如果你要在删除元素后还能继续使用它,就使用方法pop() 。

4:根据删除元素:

  • 如果你只知道要删除的元素的值,可使用方法remove()

    colors = ['red', 'green', 'blue', 'pink']
    colors.remove('red')
    print(colors)
    # 输出结果 [u'green', u'blue', u'pink']
    
  • 使用remove()从列表中删除元素时,也可接着使用它的值

    colors = ['red', 'green', 'blue', 'pink']
    print(colors)
    red_color = 'red'  # 将要删除的值,赋值给一个变量
    no_red = colors.remove(red_color)  # 删除这个变量  remove()是没有返回值的 
    print(no_red)  #输出结果None
    print(colors)
    message = 'My like {}'.format(red_color)  # 不过这个值还在变量中
    print(message)
    # 输出结果:
    [u'red', u'green', u'blue', u'pink']
    [u'green', u'blue', u'pink']
    My like red
    
  • 注意:方法remove() 只删除第一个指定的值。

三、组织列表:

3.1、使用方法Sort()对列表进行永久性排序:

  • Python方法sort() 让你能够较为轻松地对列表进行排序。

    colors = ['red', 'green', 'blue', 'black', 'pink']
    colors.sort()
    print(colors)
    # 输出结果: [u'black', u'blue', u'green', u'pink', u'red']  # 是按字母进行排序
    
  • 还可以按与字母顺序相反的顺序排列列表元素,为此,只需向sort() 方法传递参数reverse=True

    colors = ['red', 'green', 'blue', 'black', 'pink']
    colors.sort(reverse=True)
    print(colors)
    # 输出结果: [u'red', u'pink', u'green', u'blue', u'black']
    
  • 列表元素排列顺序的修改是永久性的

3.2、使用函数sorted()对列表进行临时排序:

  • 函数sorted() 让你能够按特定顺序显示列表元素,同时不影响它们在列表中的原始排列顺序

    colors = ['red', 'green', 'blue', 'black', 'pink']
    print(colors)  # 按照列表显示顺序
    print(sorted(colors))  # 在按字母进行排序显示顺序
    print(colors)  #  特定顺序显示列表后,我们进行核实,确认列表元素的排列顺序与以前相同
    # 输出结果:
    [u'red', u'green', u'blue', u'black', u'pink']
    [u'black', u'blue', u'green', u'pink', u'red']
    [u'red', u'green', u'blue', u'black', u'pink']
    
    • 注意:调用函数sorted() 后,列表元素的排列顺序并没有变。
    • 如果你要按与字母顺序相反的顺序显示列表,也可向函数sorted() 传递参数reverse=True

3.3、倒着打印列表:

  • 反转列表元素的排列顺序,可使用方法reverse()

    colors = ['red', 'green', 'blue', 'black', 'pink']
    colors.reverse()
    print(colors)
    # 输出结果:[u'pink', u'black', u'blue', u'green', u'red']
    
    • 注意,reverse() 不是指按与字母顺序相反的顺序排列列表元素,而只是反转列表元素的排列顺序

    • 方法reverse() 永久性地修改列表元素的排列顺序,但可随时恢复到原来的排列顺序,为此只需对列表再次调用reverse() 即可。

      colors = ['red', 'green', 'blue', 'black', 'pink']
      colors.reverse()
      colors.reverse()
      print(colors)
      # 输出结果:[u'red', u'green', u'blue', u'black', u'pink']
      

3.4、确定列表的长度:

  • 函数len()可快速获悉列表的长度

    colors = ['red', 'green', 'blue', 'black', 'pink']
    print(len(colors))
    # 5
    
  • 如何对列表进行永久性排序方法sort(),以及如何为展示列表而进行临时排序函数sorted()

四、操作列表:

4.1、遍历整个列表(for循环)

  • 你经常需要遍历列表的所有元素,对每个元素执行相同的操作

    colors = ['red', 'green', 'blue', 'black', 'pink']  # 定义一个列表
    for color in colors:  #定义一个for 循环
        print(color)  # 对列表中每个名字,python都将重复执行
    # 输出结果如下:
    red
    green
    blue
    black
    pink
    
    
4.1.1、列表循环:
  • 循环这种概念很重要,因为它是让计算机自动完成重复工作的常见方式之一

    colors = ['red', 'green', 'blue', 'black', 'pink']  # Python 会首先读取第一行代码
    for color in colors:  # 第一个值'red' 存储到变量 color中,读取下一行代码, 下一行的时候读取的是'green', 鉴于该列表还包括其他的值,
        print(color)  # 对列表中每个名字,python都将重复执行
    
    • 在这个过程中,for 循环后面没有其他的代码,因此程序就此结束。
4.1.2、再for循环中执行更多的操作:
  • 在for 循环中,可对每个元素执行任何操作

    colors = ['red', 'green', 'blue', 'black', 'pink']
    for color in colors:
        print('My like {}'.format(color).title() + ', too')
    # 输出结果如下:
    My Like Red, too
    My Like Green, too
    My Like Blue, too
    My Like Black, too
    My Like Pink, too
    
    • 每个缩进的代码行都是循环的一部分,且将针对列表中的每个值都执行一次。因此,可对列表中的每个值执行任意次数的操作。
    • 在for 循环中,想包含多少行代码都可以。
4.1.3、再for循环结束后执行一些操作:
  • 下面将print()打印放到跟for循环并列的行中。

    colors = ['red', 'green', 'blue', 'black', 'pink']
    for color in colors:
        print('My like {}'.format(color).title() + ', too')
    print('finish')
    # 输出结果如下:
    My Like Red, too
    My Like Green, too
    My Like Blue, too
    My Like Black, too
    My Like Pink, too
    finish
    
    • 可以看出,再for循环结束后,程序会继续往下走。

4.2、避免缩进错误:

4.2.1、忘记缩进:
  • 对于位于for 语句后面且属于循环组成部分的代码行,一定要缩进。如果你忘记缩进,Python会提醒你:

    colors = ['red', 'green', 'blue', 'black', 'pink']
    for color in colors:
    print('My like {}'.format(color).title() + ', too')
    # 会提示你错误信息:
      File "C:/Users/lh9/PycharmProjects/request/my_test01.py", line 138
        print('My like {}'.format(color).title() + ', too')
            ^
    IndentationError: expected an indented block
    
    • 通常,将紧跟在for 语句后面的代码行缩进,可消除这种缩进错误。

4.3、创建数值列表:

4.3.1、使用函数range():
  • Python函数range() 让你能够轻松地生成一系列的数字

    for value in range(1, 5):
        print(value)
    # 输出结果如下:
    1
    2
    3
    4
    
    • 函数range() 让Python从你指定的第一个值开始数,并在到达你指定的第二个值后停止,因此输出不包含第二个值(这里为5)。
4.3.2、使用range()创建数字列表:
  • 要创建数字列表,可使用函数list() 将range()的结果直接转换为列表。

    numbers = list(range(1, 5))
    print(numbers)
    # 输出结果:[1, 2, 3, 4]
    
  • 使用range()时,还可以指定步长

    numbers = list(range(2, 11, 2))
    print(numbers)
    # 输出结果如下: 打印2~10的 偶数
    [2, 4, 6, 8, 10]
    
  • 使用函数range()几乎能够创建任何需要的数字集

    squares = []   # 首先创建一个空列表
    for value in range(1, 11):  # 然后循环数值 1, 10
        square = value**2  # value的平方
        squares.append(square)  # 依次加入列表中
    print(squares)  # 打印列表中的结果
    # 输出结果:[1, 4, 9, 16, 25, 36, 49, 64, 81, 100]
    
    # 还可以简写为:
    squares = []
    for value in range(1, 11):
        squares.append(value**2)
    print(squares)  # 得到的结果跟上面是一样的
    
4.3.3、对数字列表执行简单的统计计算:
  • 数字列表的最大值max()最小值min()总和sum()

    digits = [0, 11, 22, 33, 44, 11, 22, 33, 100]
    print(max(digits))
    print(min(digits))
    print(sum(digits))
    # 输出结果如下
    100
    0
    276
    
4.3.4、列表解析:
  • 常说的列表推到式:

    squares = [value**2 for value in range(1, 11)]
    print(squares) 
    # 输出结果: [1, 4, 9, 16, 25, 36, 49, 64, 81, 100]
    
    • 在这个示例中,表达式为value**2 ,它计算平方值
    • 接下来,编写一个for 循环,用于给表达式提供值,再加上右方括号。在这个示例中,for 循环为for value in range(1,11) ,它将值1~10提供给表达式value**2
    • 请注意,这里的for 语句末尾没有冒号。

4.4、使用列表的一部分:

  • 处理列表的部分元素——Python称之为切片
4.4.1 切片:
  • 要创建切片,可指定要使用的第一个元素最后一个元素的索引\

  • 与函数range() 一样,Python在到达你指定的第二个索引前面的元素后停止

  • 要输出列表中的前三个元素,需要指定索引0~3,这将输出分别为0 、1 和2 的元素。

    colors = ['red', 'green', 'blue', 'pink', 'black', 'yellow']
    print(colors[0:3]) # 该列表有一个切片, 切的是前三位, 0,1,2  不包括3, 所以去列表中取0,1,2的索引
    # 输出结果:[u'red', u'green', u'blue']
    
  • 要输出列表中1~3的元素

    colors = ['red', 'green', 'blue', 'pink', 'black', 'yellow']
    print(colors[1:4])
    # 输出结果:[u'green', u'blue', u'pink']
    
  • 如果没有指定第一个索引,Python将自动从列表开头开始

    colors = ['red', 'green', 'blue', 'pink', 'black', 'yellow']
    print(colors[:4])
    # 输出结果:[u'red', u'green', u'blue', u'pink']
    
  • 提取从第3个元素到列表末尾的所有元素

    colors = ['red', 'green', 'blue', 'pink', 'black', 'yellow']
    print(colors[3:])
    # 输出结果:[u'pink', u'black', u'yellow']
    
  • 负数索引返回离列表末尾相应距离的元素

    colors = ['red', 'green', 'blue', 'pink', 'black', 'yellow']
    print(colors[-3:])
    # 输出结果:[u'pink', u'black', u'yellow']
    
4.4.2、遍历切片:
  • 遍历列表的部分元素,可在for 循环使用切片

    colors = ['red', 'green', 'blue', 'pink', 'black', 'yellow']
    for color in colors[:3]:
        print(color)
    # 输出结果如下:
    red
    green
    blue
    
4.4.3、复制列表:
  • 要复制列表,可创建一个包含整个列表的切片,方法是同时省略起始索引和终止索引([:] )

    colors = ['red', 'green', 'blue', 'pink', 'black', 'yellow'] # 1.首先创建了一个colors列表
    my_colors = colors[:]  #2.再不指定任何索引的情况下,从列表colors中提取切片, 创建了my_colors, 通过变量传递给了my_colors
    print(colors)
    print(my_colors)
    
    # 输出结果如下:
    [u'red', u'green', u'blue', u'pink', u'black', u'yellow']
    [u'red', u'green', u'blue', u'pink', u'black', u'yellow']
    
  • 核实我们确实是2个列表, 而不是一个列表

    colors = ['red', 'green', 'blue', 'pink', 'black', 'yellow']
    my_colors = colors[:]
    colors.append('white')
    my_colors.append('orange')
    print(colors)
    print(my_colors)
    #输出结果如下:
    [u'red', u'green', u'blue', u'pink', u'black', u'yellow', u'white']
    [u'red', u'green', u'blue', u'pink', u'black', u'yellow', u'orange']
    
  • 下面演示不使用切片的情况下,进行列表的复制

    colors = ['red', 'green', 'blue', 'pink', 'black', 'yellow']
    my_colors = colors #1.colors赋值给了my_colors, 而不是将colors副本给了my_colors
    # 这种语法是python 将新变量my_colors关联到包含再colors中, 因此两个变量都指向同一个列表
    colors.append('white')
    my_colors.append('orange')
    print(colors)
    print(my_colors)
    # 输出结果如下:
    [u'red', u'green', u'blue', u'pink', u'black', u'yellow', u'white', u'orange']
    [u'red', u'green', u'blue', u'pink', u'black', u'yellow', u'white', u'orange']
    

五、 元组操作:

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

5.1、定义元组:

  • 元组看起来犹如列表,但使用圆括号而不是方括号来标识。定义元组后,就可以使用索引来访问其元素,就像访问列表元素一样。

    my_tuple = (0, 100)  # 首先定义了元组, 使用的是()括号,
    print(my_tuple[0])  # 接下来使用[0]索引来获取各个元素, 跟列表是一样的
    print(my_tuple[1])
    # 输出结果如下: 
    0
    100 
    
  • 接下来, 修改元组中的元素

    my_tuple = (0, 100)
    my_tuple[0] = 50
    print(my_tuple)
    # 会出现如下错误信息:
    Traceback (most recent call last):
      File "C:/Users/lh9/PycharmProjects/request/my_test01.py", line 177, in <module>
        my_tuple[0] = 50
    TypeError: 'tuple' object does not support item assignment
    
    • 修改第一个元素的值,导致Python返回类型错误消息。
    • 由于试图修改元组的操作是被禁止的,因此Python指出不能给元组的元素赋值

5.2、遍历元组中所有的值:

  • 像列表一样,也可以使用for 循环来遍历元组中的所有值

    my_tuple = (0, 100)
    for value in my_tuple:
        print(value)
    # 输出结果如下:
    0
    100
    

5.3、修改元组的变量:

  • 虽然不能修改元组的元素,但可以给存储元组的变量赋值

    my_tuple = (0, 100)
    for value in my_tuple:
        print(value)
    
    my_tuple = (200, 300)
    for value in my_tuple:
        print(value)
    # 输出结果如下:
    0
    100
    200
    300
    
    • 如果需要存储的一组值在程序的整个生命周期内都不变,可使用元组。
  • 1
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值