列表与元组

列表与元组

1. 列表(list)

1.1 定义

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

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

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

nameList = []

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

1.2 切片

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

  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.3 增、删、改

1.3.1 增

  1. 使用 append添加值到列表的末尾
1
2
3
4
list1 = [1,2]

list1.append('你好')
print(list1) # [1,2,'你好']
  1. 使用insert()添加值到指定的位置
    insert():第一个参数表示 下标 的位置,第二个参数表示 添加的值
    ​ 如果下标设置过大时,则结果和 append 效果一致。
1
2
3
4
list1 = [1, 2, 3, 4]

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

    如果 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']
  1. 两个列表合并可以使用+

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

    print(a + b) # [1, 2, 3, 4, 5, 6]

1.3.2 删

  1. 使用 pop() 删除列表的元素
  • pop 方法不加参数时,默认删除最后一位。
  • pop 方法加入参数时,则删除指定下标的值。
  • 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]
  1. 使用 remove() 根据值进行删除
    当有多个相同的值时,remove 方法只删除第一个遇到的值

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

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

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

    del list1[2] # 30
    print(list1) # [10, 20, 40, 30]

1.3.3 改

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

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

1.4 列表运算符

列表对 + 和 的操作符与字符串相似。+ 号用于组合列表, 号用于重复列表

Python 表达式结果描述
len([1,2,3])3计算元素个数
[1,2,3] + [4.5][1,2,3,4,5]组合
[‘Hi!’]*3[‘Hi!’,’Hi!’,’Hi!’]复制
3 in [1,2,3]True元素是否存在于列表中
for x in [1,2,3]: print(x)1 2 3迭代(遍历)

1.5 list 函数&方法

函数&方法描述
len(list)列表元素个数
max(list)返回最大值
min(list)返回最小值
list(seq)将元组转换为列表
list.append(obj)在列表末尾添加新元素
list.extend(seq)在列表末尾一次性追加另一个序列中的多个值
list.insert(index, obj)在列表指定位置插入新元素
list.remove(obj)从列表中移除第一个指定的值
list.pop([index])移除列表末尾(或指定位置)的元素,并返回该元素
list.sort([cmp[, key[, reverse]]])对原列表进行排序
list.reverse()反向列表中元素
list.count()统计某个元素在列表中出现的次数
list.index(obj)返回某个元素在列表中的位置

1.5.1 排序

  • list.sort()方法只能用在列表中;
  • sorted()方法可以用在所有可迭代序列中;
临时排序

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

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

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

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

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

list1.sort()
print(list1) # [-1, 6, 34, 87, 90, 99, 102]
倒序
  • 通过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]

2. 元组(Tupl)

2.1 定义

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

1
2
# 定义一个空元组
nameTupl = ()
  1. 元组中只有一个元素,必须要在后面加上逗号,.
  2. 定义元组还可以去掉圆括号
1
2
3
4
5
6
7
# 真确写法
a = (1, )
a = 1,
a = 1, 2, 3.14, 'hello'

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

2.2 切片

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

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

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

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

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

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

2.4 多个变量同时赋值

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)

2.5 tuple 运算符

Python 表达式结果描述
len((1,2,3))3返回元组的长度
(1,2,3) + (4,5,6)(1,2,3,4,5,6)连接两个元组
(‘Hi!’,) * 4(‘Hi!’, ‘Hi!’, ‘Hi!’, ‘Hi!’)重复元组
3 in (1,2,3)True判断元素是否在元组中
for x in (1,2,3): print(x)1 2 3遍历元组

2.6 元组内置函数

方法描述
len(tuple)返回元组中的元素个数
max(tuple)返回元组中的最大值
min(tuple)返回元组中的最小值
tuple(seq)将序列转换为元组