Python列表的操作
1、len在列表元组中的使用
In [1]: names = ['xiaoliu', 'xiaowang', 'xiaoming']
In [2]: length = len(names)
In [3]: print(length)
Out[1]: 3
len函数可以计算出除了数字类型以外,其他所有的数据类型的长度
2、列表(元组)之间的累加与乘法
In [1]: names = ['xiaoliu', 'xiaowang', 'xiaoming']
In [2]: new_names = names + names
In [3]: print(new_names)
Out[1]: ['xiaoliu', 'xiaowang', 'xiaoming', 'xiaoliu', 'xiaowang', 'xiaoming']
In [1]: names = ['xiaoliu', 'xiaowang', 'xiaoming']
In [2]: new_names = names * 2
In [3]: print(new_names)
Out[1]: ['xiaoliu', 'xiaowang', 'xiaoming', 'xiaoliu', 'xiaowang', 'xiaoming']
3、in和not in在列表(元组)中的用法
- in是判断某个成员(元素)是否在该数据结构中
- not in就是判断某个成员(元素)是否不再该数据结构中
In [1]: names = ['xiaoliu', 'xiaowang', 'xiaoming']
In [2]: bool('xiaoliu' in names)
Out[1]: True
In [3]: bool('xiaohong' in names)
Out[2]: False
4、列表的添加-append函数
append的功能
将一个元素添加到当前列表中
append的用法
- 用法:
list.append(new_item)
- 参数:new_item:添加进列表的新的元素(成员)
In [1]: names = ['xiaoliu'] In [2]: names.append('xiaowang') In [3]: print(names) Out[1]: ['xiaoliu', 'xiaowang']
- 用法:
append的注意事项
- 被添加的元素只会被添加到末尾
- append函数是在原有列表的基础上添加,不需要额外添加新的变量
5、列表的添加-insert函数
insert的功能
将一个元素添加到当前列表的指定位置中
insert的用法
用法:
list.insert(index, new_item)
参数
index:新的元素放在哪个位置(数字)
new_item:添加的新元素(成员)
In [1]: names = ['xiaoliu', 'xiaowang', 'xiaoming'] In [2]: names.insert(1, 'xiaohong') In [3]: print(names) Out[1]: ['xiaoliu','xiaohong', 'xiaowang', 'xiaoming']
insert与append的区别
- append只能添加到列表的末尾,而insert可以选择任何一个位置
- 如果insert传入的位置列表中不存在,则将新元素添加到列表结尾
- 字符串,元组,列表的位置是从0开始计算的
6、列表(元组)的count函数
count的功能
返回当前列表中某个成员的个数
count的用法
- 用法:
inttype = list.count(item)
- 参数:你想查询个数的元素
In [1]: names = ['xiaoliu', 'xiaowang', 'xiaoming', 'xiaoliu'] In [2]: count = names.count('xiaoliu') In [3]: print(count) Out[1]: 2
- 用法:
count的注意事项
- 如果查询的成员(元素)不存在,则返回0
- 列表只会检查完整元素是否存在需要计算的内容
In [1]: names = ['xiaoliu', 'xiaowang', 'xiaoming', 'xiaoliu'] In [2]: count = names.count('xiao') In [3]: print(count) Out[1]: 0
7、列表的remove函数
remove的功能
删除列表中的某个元素
remove的用法
- 用法:
list.remove(item)
- 参数:item:准备删除的列表元素
In [1]: names = ['xiaoliu', 'xiaowang', 'xiaoming', 'xiaoliu'] In [2]: names.remove('xiaowang') In [3]: print(names) Out[1]: ['xiaoliu', 'xiaoming', 'xiaoliu']
- 用法:
remove的注意事项
- 如果删除的成员(元素)不存在,会直接报错
- 如果被删除的元素有多个,只会删除第一个
- remove函数不会反悔一个新的列表,而是在原先的列表中对元素进行删除
Python内置函数del
- del把变量完全删除
In [1]: names = ['xiaoliu', 'xiaowang', 'xiaoming', 'xiaoliu'] In [2]: del names In [3]: print(names) Out[1]: NameError: name 'names' is not defined
8、列表的reverse函数
reverse的功能
对当前列表顺序进行翻转
reverse的用法
- 用法:
list.reverse()
- 参数:无参数传递
In [1]: names = ['xiaoliu', 'xiaowang', 'xiaoming'] In [2]: names.reverse() In [3]: print(names) Out[1]: ['xiaoming', 'xiaowang', 'xiaoliu']
- 用法:
9、列表的sort函数
sort的功能
对当前列表按照一定规律排序
sort的用法
用法:
list.sort(key=None, reverse=False)
参数:
key - 参数比较(必须是一个函数)
reverse - 排序规则,reverse = True降序,reverse = False升序(默认)
key设计函数学习,后续再写,当前默认不传递
In [1]: books = ['python', 'django', 'web'] In [2]: books.sort() In [3]: print(books) Out[1]: ['django', 'python', 'web']
sort的注意事项
- 列表中的元素类型必须相同,否则无法排序(报错)
In [1]: mixs = ['python', 1, 1.5, 'django'] In [2]: mixs.sort() Out[1]: TypeError: '<' not supported between instances of 'int' and 'str'
10、列表的clear函数
clear的功能
讲当前列表中的数据清空
clear的用法
list.clear()
–>该函数无参数,无返回值In [1]: books = ['python', 'django', 'web'] In [2]: books.clear() In [3]: print(books) Out[1]: []
11、列表的copy函数
copy的功能
将当前的列表复制一份相同的列表,新列表与旧列表内容相同,但内存空间不同
copy的用法
- 用法:
list.copy()
–>该函数无参数,返回一个一模一样的列表
In [1]: old_list = ['a', 'b', 'c'] In [2]: new_list = old_list.copy() In [3]: print(new_list) Out[1]: ['a', 'b', 'c']
- 用法:
copy与2次赋值的区别
二次复制的变量与原始变量享有相同内存空间
copy函数创建的新列表与原始列表不是一个内存空间,不同享数据变更
In [1]: a = [1, 2, 3] In [2]: b = a.copy() In [3]: b.append(4) In [4]: print(b) In [5]: print(a) Out[1]: b [1, 2, 3, 4] a [1, 2, 3]
copy属于浅拷贝
浅拷贝:通俗的说,我们有一个列表a,列表里的元素还是列表,当我们拷贝出新列表b后,无论是a还是b的内部的列表中的数据发生了变化后,互相之间都会受到影响
In [1]: a = [[1, 2, 3], [5, 6, 7]] In [2]: b = a.copy() In [3]: b[0].append(10) In [4]: print(b) In [5]: print(a) Out[1]: b [[1, 2, 3, 10], [5, 6, 7]] a [[1, 2, 3, 10], [5, 6, 7]]
深拷贝:不仅对第一层数据进行了copy,对深层的数据也进行了copy,原始变量和新变量完完全全不共享数据
In [1]: a = [[1, 2, 3], [5, 6, 7]] In [2]: b = a.deepcopy() In [3]: b[0].append(10) In [4]: print(b) In [5]: print(a) Out[1]: b [[1, 2, 3, 10], [5, 6, 7]] a [[1, 2, 3], [5, 6, 7]]
深浅拷贝之间的内存变化
因为列表里面存储的是可变类型元素,所以会产生子对象(开辟一块新的内存空间)去存储,如下图中
lst1[5]
中实际上存储的是子对象的内存地址信息,浅拷贝只会拷贝父对象,而不会拷贝子对象,当子对象发生改变的时候,浅拷贝到的对象中的子对象数据也会一并发生改变,而深拷贝不仅会拷贝父对象,也会拷贝子对象
12、列表的extend函数
extend功能
将其他列表或元组中的元素导入到当前列表中
extend用法
- 用法:
list.extend(iterable)
- 参数:iterable代表列表或元组,该函数无返回值
In [1]: names = ['xiaoliu', 'xiaowang', 'xiaoming'] In [2]: new_names = ('xiaogang', 'xiaohong') In [3]: names.extend(new_names) In [4]: print(names) Out[1]: ['xiaoliu', 'xiaowang', 'xiaoming', 'xiaogang', 'xiaohong']
- 用法:
13、列表的索引与切片
什么是索引
字符串,列表和元组,从最左边记录的位置就是索引
索引用数字表示,起始从0开始
字符串,列表(元组)的最大索引是他们的长度-1
In [1]: I = ['name'] In [2]: I[0] Out[1]: 'name'
什么是切片
索引用来对单个元素进行访问,切片则对一定范围内的元素进行访问
切片通过冒号在中括号内把相隔的两个索引查找出来
[0:10]
numbers = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10] print(numbers[3:8]) >> [4, 5, 6, 7, 8]
切片规则为:左含右不含
列表的索引,获取与修改
list[index] = new_item
数据的修改只能在存在的索引范围内
列表无法通过添加新的索引的方式赋值
test = ['a', 'b', 'c'] test[2] = 's' ----> OK test[3] = 'o' ----> NO
list.index[item]
names = ['david', 'tom'] names.index['david'] >> 0 names.index['kevin'] >> ValueError: 'kevin' is not in list
通过pop删除索引
pop的功能:通过索引删除并获取列表的元素
pop的用法:
list.pop(index)
,参数index:删除列表的第几个索引1、函数会删除改索引的元素并返回
2、如果传入的index索引不存在则会报错
names = ['david', 'tom'] pop_item = names.pop[0] print('pop item: ', pop_item, 'names:', names) >> pop item: david names:['tom']
通过del删除索引
del list[index]
- 直接删除,无返回值
- 如果index(索引)不存在,则会报错
names = ['david', 'tom'] del names[1] print(names) >> ['david']
索引在元组中的特殊性
- 可以和列表一样获取索引与切片索引
- 元祖函数index和列表用法完全一致
- 无法通过索引修改与删除元素
14、索引与切片之字符串
字符串的索引,获取
- 索引规则与列表相同
- 切片规则和索引的获取与列表相同
name = 'david' name[0] --> d name[:2] --> da
无法通过索引修改与删除,因为字符串不可修改
字符串的find与index函数
功能:获取元素的索引位置
用法:
string.index(item)
–>item:查询个数的元素,返回索引位置string.find(item)
–>item:查询个数的元素,返回索引位置info = 'my name is david' info.index('david') >> 11 info.find('david') >> 11
index与find的区别
- find如果获取不到,返回-1
- index如果获取不到,直接报错
info = 'my name is david' info.find('hello') >> -1 info.index('hello') >> ValueError: substring not found
转载请注明来源