三、列表与元组

列表(list)

定义

列表类似于Java中的数组,但是它更强大,可以存放 任意 数据类型。

列表的内容 可以改变,字符串的内容 不可改变,如果需要改变则需要重新赋值。

1
2
3
4
5
6
# 定义一个空列表

nameList = []

# 列表可以存放 任意 数据类型
a = [1, 2, 3.14, 'hello', [7,8,9] ]

切片

列表可以用元素索引的方式取出里面的元素; 也可以用切片操作 截取一部分内容生成 新的列表
列表的 索引和切片操作和 字符串是 类似的。

::: warning

1.列表切片后得到的结果仍然为 列表

2.列表切片后得到的是新列表,原来的列表不变。

:::

1
2
3
4
5
6
7
a = [1, 2, 3.14, 'hello', [7,8,9] ]

print(a[3]) # 3.14
print(a[-1]) # [7,8,9]

print(a[3:]) # ['hello', [7,8,9] ]
print(a[-1][:2]) # [7,8]

增、删、改

    1. 使用 append添加值到列表的末尾

      1
      2
      3
      4
      list1 = [1,2]

      list1.append('你好')
      print(list1) # [1,2,'你好']
    2. 使用insert()添加值到指定的位置

      insert():第一个参数表示 下标 的位置,第二个参数表示 添加的值

      ​ 如果下标设置过大时,则结果和 append 效果一致。

      1
      2
      3
      4
      list1 = [1, 2, 3, 4]

      list1.insert(2, "你好")
      print(list1) # [1, 2, "你好", 3, 4]
    3. 使用 extend()可以对列表进行拼接

      ::: tip

      如果 extend 的参数是字符串时,则会将字符串拆分为列表然后进行拼接。

      :::

      1
      2
      3
      4
      5
      6
      7
      list1 = [10, 20 ,30]

      list1.extend([40, 50])
      print(list1) # [10, 20 ,30, 40 ,50]

      list1.extend('abc')
      print(list1) # [10, 20 ,30, 40 ,50, 'a', 'b', 'c']
    4. 两个列表合并可以使用+

      1
      2
      3
      4
      a = [1, 2, 3]
      b = [4, 5, 6]

      print(a + b) # [1, 2, 3, 4, 5, 6]
    1. 使用 pop() 删除列表的元素

      ::: tip

      1.pop 方法不加参数时,默认删除最后一位。

      2.pop 方法加入参数时,则删除指定下标的值。

      3.pop 方法删除的值可以使用变量进行接收。

      :::

      1
      2
      3
      4
      5
      6
      list1 = [10, 20, 30, 40, 50]

      list1.pop() # [10, 20, 30, 40]
      list1.pop(1) # [10, 30, 40]
      a=list1.pop() # 40
      print(list) # [10, 30]
    2. 使用 remove() 根据值进行删除

      当有多个相同的值时,remove 方法只删除第一个遇到的值

      1
      2
      3
      4
      list1 = [10, 20, 30, 40, 30]

      list1.remove(30) # 30
      print(list1) # [10, 20, 40, 30]
    3. 使用 del 删除列表元素

      1
      2
      3
      4
      list1 = [10, 20, 30, 40, 30]

      del list1[2] # 30
      print(list1) # [10, 20, 40, 30]
  • 列表属于可变对象,其内容 可以改变,字符串的内容 不可改变,如果需要改变则需要重新赋值。

    1
    2
    3
    4
    list1 = ['a', 33, [10, 20], {'A': 'apple'}, (1, 2)]

    list1[2][0] = 'a'
    print(list1) # ['a', 33, ['a', 20], {'A': 'apple'}, (1, 2)]

排序

::: warning

1.list.sort()方法只能用在列表中;

2.sorted()方法可以用在所有可迭代序列中;

:::

  1. 临时排序

    ::: tip

    sorted()方法不会改变原列表,会返回一个 新列表,新列表会以 从小到大 的顺序排列。

    :::

    1
    2
    3
    list1 = [34,6,-1,90,102,87,99]

    print(sorted(list1)) # [-1, 6, 34, 87, 90, 99, 102]
  2. 永久排序

    ::: tip

    sort()方法改变的是原列表,原列表改变后不可逆。

    :::

    1
    2
    3
    4
    list1 = [34,6,-1,90,102,87,99]

    list1.sort()
    print(list1) # [-1, 6, 34, 87, 90, 99, 102]
  3. 倒序

    • 通过sort()方法进行排序

      1
      2
      3
      4
      list1=[-1, 6, 34, 87, 90, 99, 102]

      list1.sotr(reverse = True)
      print(list1) # [102, 99, 90, 87, 34, 6, -1]
    • 通过 切片 的方式进行排序

      1
      2
      3
      list1=[-1, 6, 34, 87, 90, 99, 102]

      print(list1[::-1]) # [102, 99, 90, 87, 34, 6, -1]

元组(Tupl)

定义

元组和列表非常相似,是 不可变 对象,可以存放 任何类型 的数据,它不能进行 增、删、改 操作。

用圆括号()来表示元组。

1
2
3
# 定义一个空元组

nameTupl = ()

::: warning

1.元组中只有一个元素,必须要在后面加上逗号.

2.定义元组还可以去掉圆括号

:::

1
2
3
4
5
6
7
# 真确写法
a = (1, )
a = 1,
a = 1, 2, 3.14, 'hello'

# 错误写法
a = (1) # a就是 数字1 了, 而不是包含 数字1 的元组

切片

元组的 索引和切片操作和 列表、字符串是 类似的。

1
2
3
4
a = (1, 2, 3.14, 'hello', [7,8,9])

print(a[0:3]) # (1, 2, 3.14)
print(a[-1][:2]) # [7,8]

元组对象的内容是 不可以变化的,但是元组中的列表的内容却是可以改变的.

1
2
3
4
a = (1, 2, 3.14, 'hello', [7,8,9])

a[-1][0] = '你好'
print(a) # (1, 2, 3.14, 'hello', ['你好', 8, 9])

判断元素是否在元组或列表中

使用 innot in 判断元素是否在列表或元组中

1
2
3
4
tuple1=(10,20,30,40,50)

print(10 in tuple1) # True
print(60 not in tuple1) # True

多个变量同时赋值

1
2
3
4
5
x,y = (1,2)   # x 的值为 1, y 的值为 2
print(x,y)

name, age = ['李逵', 33] # name 的值为 '李逵', age 的值为 33
print(name,age)