一、列表 List 与 元组 Tuple 操作
sort 函数
sort 函数的功能是可以对当前列表按照一定的归类进行排序,该函数有两个参数需要传入,其中一个可以不传,另外一个时排序规则 reverse=Tue 或者 False,默认是 False 既按照升序排列,True 则是按照降序排列
sort 对列表进行排序要求列表中的元素必须为相同类型,否则无法排序
list_str = ['2051', '2022', 1, [1, 2, 3]] print('排序前的列表顺序:{}'.format(list_str)) list_str.sort() print('排序后的列表顺序:{}'.format(list_str)) 复制代码
list_str = ['2051', '2022', '2040', '2050'] print('排序前的列表顺序:{}'.format(list_str)) list_str.sort() print('排序后的列表顺序:{}'.format(list_str)) 复制代码
list_str = ['2051', '2022', '2040', '2050'] print('排序前的列表顺序:{}'.format(list_str)) list_str.sort(reverse=True) print('排序后的列表顺序:{}'.format(list_str)) 复制代码
sort函数传入参数reverse=True时按照降序排列
clear 函数
clear函数可以将当前列表中的数据清空,无须传递参数也没有返回值
list_str = ['2051', '2022', '2040', '2050'] print('clear前的列:{}'.format(list_str)) list_str.clear() print('clear后的列表:{}'.format(list_str)) 复制代码
copy 函数
copy函数将当前的列表赋值一份相同的列表,新列表的内容与旧列表的内容相同,但是内存地址不同;copy函数无须传入参数;返回一个相同的列表
copy函数与二次赋值的区别:
- 二次赋值与原变量的内存地址相同
- copy返回的列表内存地址与原列表不同
- copy返回的列表与原列表是两个列表,修改一个列表的内容对另一个列表不会有任何影响,二次赋值由于两个变量指向的都是同一块内存,所有修改数据会对两个变量都有影响
- copy属于浅拷贝
浅拷贝
,有一个列表a,列表中的元素还是列表,当拷贝出新列表b后,无论是a还是b的内部的列表中的数据发生了变化后,相互之间都会收到影响
list_01 = [ ['stark', 'peter'], ['banner', 'steve'], [1, 5, 8, 9] ] list_01_copy = list_01.copy() print(list_01_copy) # 修改列表中的元素 list_01[0].append('clint') print(list_01_copy) 复制代码
修改只有第一层数据不会收到影响,嵌套的列表则会受到影响
深拷贝不仅对第一层数据记性了拷贝,同时也对深层的数据进行了拷贝,原始变量和新变量完全是两个变量,修改不会互相影响。
import copy list_01 = [ ['stark', 'peter'], ['banner', 'steve'], [1, 5, 8, 9] ] # 深拷贝 list_01_deepcopy = copy.deepcopy(list_01) print(list_01_deepcopy) # 修改列表中的元素 list_01[0].append('clint') print(list_01_deepcopy) print('list_01的内存地址为:{}'.format(id(list_01))) print('list_01_deep_copy的内存地址为:{}'.format(id(list_01_deepcopy))) 复制代码
深拷贝需要导入copy模块,调用deepcopy函数完成,调用深拷贝返回的列表是一个新的列表,内存地址不同。
extend 函数
extend函数是将其他列表或者元组中的元素
导入到当前列表中,接收一个可迭代的数据类型作为参数如列表元组字典字符串等,该函数无返回值
heros = ['stark'] hero = ['thor', 'loki', 'banner' ] heros.extend(hero) print(heros) heros.extend(('peter', 'strange')) print(heros) heros.extend('hello') print(heros) heros.extend({'name': 'pipi'}) print(heros) 复制代码
传入字典时,只会将Value加入列表中。
heros = ['stark'] heros.extend(None) 复制代码
传入int整型
heros = ['stark'] heros.extend(12) print(heros) 复制代码
传入bool类型
heros = ['stark'] heros.extend(True) print(heros) 复制代码
pop 函数
pop 函数可以通过索引删除索引对应的元素,并返回该元素,如果传入的索引不存在则会报错
list_str = ['stark', 'peter', 'banner', 'clint', 'thor'] pop_item = list_str.pop(3) print('删除的元素为:', pop_item) pop_item_nonexist = list_str.pop(10) print(pop_item_nonexist) 复制代码
del 函数
del 函数可以通过索引删除元素,与pop函数的区别是del函数无返回
list_str = ['stark', 'peter', 'banner', 'clint', 'thor'] del list_str[3] print(list_str) del list_str[10] print(list_str) 复制代码
del 函数删除元素的方式就是 通过[]方式取出列表中的元素,然后在del删除