3.列表与元组
列表(list)
定义
列表类似于 Java 中的数组,但是它更强大,可以存放 任意 数据类型。
列表的内容 可以改变,字符串的内容 不可改变,如果需要改变则需要重新赋值。
# 定义一个空列表
nameList = []
# 列表可以存放 任意 数据类型
a = [1, 2, 3.14, 'hello', [7,8,9] ]
切片
列表可以用元素索引的方式取出里面的元素; 也可以用切片操作 截取一部分内容生成 新的列表。 列表的 索引和切片操作和 字符串是 类似的。
注意
1.列表切片后得到的结果仍然为 列表。
2.列表切片后得到的是新列表,原来的列表不变。
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]
增、删、改
增
使用
append
添加值到列表的末尾list1 = [1,2] list1.append('你好') print(list1) # [1,2,'你好']
使用
insert()
添加值到指定的位置insert()
:第一个参数表示 下标 的位置,第二个参数表示 添加的值 。 如果下标设置过大时,则结果和 append 效果一致。
list1 = [1, 2, 3, 4] list1.insert(2, "你好") print(list1) # [1, 2, "你好", 3, 4]
使用
extend()
可以对列表进行拼接提示
如果 extend 的参数是字符串时,则会将字符串拆分为列表然后进行拼接。
:::
```python
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']
```
两个列表合并可以使用
+
a = [1, 2, 3] b = [4, 5, 6] print(a + b) # [1, 2, 3, 4, 5, 6]
删
使用
pop()
删除列表的元素提示
1.pop 方法不加参数时,默认删除最后一位。
2.pop 方法加入参数时,则删除指定下标的值。
3.pop 方法删除的值可以使用变量进行接收。
:::
```python
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]
```
使用
remove()
根据值进行删除当有多个相同的值时,remove 方法只删除第一个遇到的值
list1 = [10, 20, 30, 40, 30] list1.remove(30) # 30 print(list1) # [10, 20, 40, 30]
使用
del
删除列表元素list1 = [10, 20, 30, 40, 30] del list1[2] # 30 print(list1) # [10, 20, 40, 30]
改
列表属于可变对象,其内容 可以改变,字符串的内容 不可改变,如果需要改变则需要重新赋值。
list1 = ['a', 33, [10, 20], {'A': 'apple'}, (1, 2)] list1[2][0] = 'a' print(list1) # ['a', 33, ['a', 20], {'A': 'apple'}, (1, 2)]
排序
注意
1.list.sort()
方法只能用在列表中;
2.sorted()
方法可以用在所有可迭代序列中;
临时排序
提示
sorted()
方法不会改变原列表,会返回一个 新列表,新列表会以 从小到大 的顺序排列。
:::
```python
list1 = [34,6,-1,90,102,87,99]
print(sorted(list1)) # [-1, 6, 34, 87, 90, 99, 102]
```
永久排序
提示
sort()
方法改变的是原列表,原列表改变后不可逆。
:::
```python
list1 = [34,6,-1,90,102,87,99]
list1.sort()
print(list1) # [-1, 6, 34, 87, 90, 99, 102]
```
倒序
通过
sort()
方法进行排序list1=[-1, 6, 34, 87, 90, 99, 102] list1.sotr(reverse = True) print(list1) # [102, 99, 90, 87, 34, 6, -1]
通过 切片 的方式进行排序
list1=[-1, 6, 34, 87, 90, 99, 102] print(list1[::-1]) # [102, 99, 90, 87, 34, 6, -1]
元组(Tupl)
定义
元组和列表非常相似,是 不可变 对象,可以存放 任何类型 的数据,它不能进行 增、删、改 操作。
用圆括号()
来表示元组。
# 定义一个空元组
nameTupl = ()
注意
1.元组中只有一个元素,必须要在后面加上逗号.
2.定义元组还可以去掉圆括号
# 真确写法
a = (1, )
a = 1,
a = 1, 2, 3.14, 'hello'
# 错误写法
a = (1) # a就是 数字1 了, 而不是包含 数字1 的元组
切片
元组的 索引和切片操作和 列表、字符串是 类似的。
a = (1, 2, 3.14, 'hello', [7,8,9])
print(a[0:3]) # (1, 2, 3.14)
print(a[-1][:2]) # [7,8]
元组对象的内容是 不可以变化的,但是元组中的列表的内容却是可以改变的.
a = (1, 2, 3.14, 'hello', [7,8,9])
a[-1][0] = '你好'
print(a) # (1, 2, 3.14, 'hello', ['你好', 8, 9])
判断元素是否在元组或列表中
使用 in
或 not in
判断元素是否在列表或元组中
tuple1=(10,20,30,40,50)
print(10 in tuple1) # True
print(60 not in tuple1) # True
多个变量同时赋值
x,y = (1,2) # x 的值为 1, y 的值为 2
print(x,y)
name, age = ['李逵', 33] # name 的值为 '李逵', age 的值为 33
print(name,age)