一、列表常用方法
1.len()
功能:len方法可以计算出除了数字类型以外,其他所有数据类型的长度。
in 和 not in 在列表(元组)中的用法
in 是判断一个元素是否在该数据结构中
not in 是判断某个元素是否不在该数据结构中
names_list = ['xg', 'xm'] print('dewei' in names_list) print('dewei' not in names_list) print(len(names_list))
2.append()
用法:list.append(new_item)
参数:把new_item添加进列表的新的元素
注意事项:被添加的元素只会添加到末尾
append 只会在原有列表的基础上添加,不需要额外的添加新的变量,体现了列表的可修改性
append只能添加一个元素
# 证明列表是可变的 # 向空列表中使用append方法加入元素,每次只能传入一个参数 books = [] print(books) print(id(books)) books.append('python入门') print(books) print(id(books))
3.insert()
功能:将一个元素添加到当前列表的指定位置中
用法:list.insert(index, new_item)
参数:index:新的元素放在哪个位置(数字)
new_item:添加的新元素
insert 与 append 的区别
append只能添加到列表的结尾,而insert方法可以选择任何一个位置
如果insert传入的位置列表中不存在,则将新元素添加到列表结尾
注意事项:insert函数中也可以传入各种数据类型
students = [ {'name': 'xg', 'age': 3}, {'name': 'xm', 'age': 5} ] xy = {'name': 'xy', 'age': 7} students.insert(0, xy) print(students)
4.count()
功能:返回当前列表中某个成员的个数。
用法:list.count(item)
参数:item,你想查询个数的元素。
注意事项:如果查询的成员不存在,则返回0.
查询的时候要传入完整的item.
list1 = ['a', 'b', 'c', 'a'] print(list1.count('a')) print(list1.count('b'))
5.remove()
功能:删除列表中的某个元素
用法:list.remove(item)
参数:准备删除的列表元素
注意事项:
如果删除的成员不存在,会直接报错。
如果被删除的元素有多个,只会删除第一个。
remove函数不会返回一个新的列表,而是在原先的列表中对元素进行删除,也就从侧面证明了列表是可变的。
del 可以把变量完全删除,也可以删除列表中指定元素。
list1 = ['a', 'b', 'c', 'd'] list1.remove('a') print(list1) del list1 print(list1)
6.reverse()
功能:对当前列表顺序进行反转
用法:list.reverse() --无参数
list1 = ['a', 'b', 'c'] # 顺便复习格式化 print('当前列表的顺序为{}'.format(list1)) print(f'当前列表的顺序为{list1}') print('当前列表的顺序为%s' % list1) list1.reverse() print('使用reverse方法后的顺序为{}'.format(list1))
7.sort()
功能:对当前列表按照一定的规律进行排序。
用法:list.sort(cmp=None, key=None, reverse=False)
参数:
cmp – 可选参数,指定排序方法的参数
key – 参数比较
reverse – 排序规则,reverse=True降序,reverse=False升序(默认)
注意事项:
列表中的元素类型必须相同,否则无法排序(报错)
shu = '01鼠' niu = '02牛' hu = '03虎' list1 = [] list1.append(shu) list1.append(hu) list1.append(niu) print(list1) list1.sort(reverse=False) # 升序,默认 print(list1) list1.sort(reverse=True) print(list1)
8.clear()
功能:将当前列表中的数据清空
用法:list.clear() ->该函数无参数,无返回值
list1 = ['a', 'b', 'c'] print(list1, len(list1)) list1.clear() print(list1, len(list1))
9.copy()
功能:将当前的列表复制一份相同的列表,新列表与旧列表内容相同,但是内存空间不同
用法:list.copy() ->该函数无参数,返回一个一摸一样的列表
copy函数与二次赋值的区别:
二次赋值的变量与原始变量享有相同内存空间
copy函数创建的新列表与原始列表不是一个内存空间,不同享数据变更
copy属于浅拷贝
什么是浅拷贝?
有一个列表a,列表里的元素还是列表,当我们拷贝出新列表b后,无论是a还是b的内部列表中数据发生变化后,相互之间都会受到影响。
只能对数据结构中的第一层数据进行拷贝,如果有更深层次的则不能进行拷贝。
什么是深拷贝?
不仅仅对第一层数据进行了copy,对深层的数据也进行了copy,原始变量和新变量完完全全不共享数据。
old_list = ['a', 'b', 'c'] new_list = old_list.copy() print(old_list, new_list) new_list.append('d') print(old_list, new_list) print(id(old_list), id(new_list))
10.extend()
功能:将其他列表或元组中的元素导入到当前列表中
用法:list.extend(iterable)
参数:iterable代表列表或者元组,该函数无返回值
extend中可以导入,列表,元组,字符串,字典(只能获取到key,会忽略value),使用列表和元组的概率大一点。
list1 = [] tuple1 = ('a', 'b', 'c') list1.extend(tuple1) print(list1)
结果['a', 'b', 'c']
,我们可以看出通过extend方法,我们的list1只是接收了tuple1中的字符串,并不是以元组的形式导入。
11.索引与切片
什么是索引?
在字符串、列表、元组中使用到索引。
从最左边记录的位置就是索引。
索引用数字表示,起始从0开始。
字符串、列表(元组)的最大索引是他们的长度-1.
什么是切片?
索引用来对单个元素进行访问,切片则是对一定范围内的元素进行访问。
切片通过冒号在中括号内把相隔的两个索引查找出来 [0: 10)
切片规则:左含,右不含。
numbers = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10] print('获取列表完整数据:', numbers[:]) print('另一种获取完整列表的方法', numbers[0:]) print('第三种获取列表的方法', numbers[0: -1]) print('列表的反序:', numbers[::-1]) # 类似reverse print('列表的反向获取', numbers[-3:-1]) print('步长获取切片', numbers[0: 8: 2]) print('切片生成空列表', numbers[0:0])
列表的索引,获取与修改
list[index] = new_item
数据的修改只能在存在的索引范围内
列表无法通过添加新的索引的方式赋值
list.index(item)
numbers[3] = 'code' print(numbers) print(numbers.index('c'))
12.pop()
功能:通过索引删除并获得列表的元素
用法:list.pop(index)
参数:
index:删除列表的第几个索引
-> 函数会删除该索引的元素并返回
-> 如果传入的index索引不存在报错
numbers = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10] item = numbers.pop(4) print(item, numbers, len(numbers))
13.del()
用法:del list[index]
-> 直接删除,无返回值
-> 如果index(索引)不存在则报错
names = ['xg', 'xm'] del names[1] print(names)
索引切片在元组种的特殊性:
可以和列表一样获取索引与切片索引
元组函数index和列表用法完全一致
无法通过索引修改与删除元组元素,因为元组是不可修改的
14.元组的index
元组是不可修改的,元组不可以删除其中的元素,但是可以直接删除元组
删除后打印,相当于已经没有这个元组了,所以肯定是会报错,这个元组没有被定义
tuple_test = (1, 2, 3) del tuple_test print(tuple_test)