python3基本数据类型02——列表、元组
一、列表
列表:两边是中括号,中间每个元素之间以“,”相隔 ,中间的元素可以是数字、字符串、元组、列表、字典 例:a = ['a',1,[2,3],(1,2),{1:2}]
直接赋值:只是传递对象的引用,原始列表发生改变时,被赋值的列表b也会改变
>>> a = [1,[2,3,4]] >>> b = a >>> a,b ([1, [2, 3, 4]], [1, [2, 3, 4]]) >>> a.append(5) >>> a,b ([1, [2, 3, 4], 5], [1, [2, 3, 4], 5])
>>> a[1].append(6)
>>> a,b
([1, [2, 3, 4, 6], 5], [1, [2, 3, 4, 6], 5])
浅拷贝:只拷贝父对象,不拷贝子对象,因此当原始列表的父对象和子对象改变时,被赋值的列表b的子对象会改变父对象不会改变
>>> c = a.copy() >>> a,c ([1, [2, 3, 4], 5], [1, [2, 3, 4], 5]) >>> a.append(7) >>> a,c ([1, [2, 3, 4], 5, 7], [1, [2, 3, 4], 5]) >>> a[1].append(6) >>> a,c ([1, [2, 3, 4, 6], 5,7], [1, [2, 3, 4, 6], 5])
注:红色代表子对象
深拷贝:copy 模块的 deepcopy 方法,完全拷贝了父对象及其子对象
>>>import copy
>>> c = copy.deepcopy(a)
>>> a, c
({1: [1, 2, 3, 4]}, {1: [1, 2, 3, 4]})
>>> a[1].append(5)
>>> a, c
({1: [1, 2, 3, 4, 5]}, {1: [1, 2, 3, 4]})
索引:根据索引查找元素
>>> age_list = [18,15,19] >>> age_list[0] 18
切片:截取需要的元素
>>> age_list[0:2] [18, 15]
长度:列表元素的个数
>>> len(age_list) 3
循环:循环输出列表里的元素
age_list = [18,15,19] for item in age_list: print(item)
列表内部提供的其它功能:
append(self, p_object):在列表末尾添加对象
输入:p_object()需要添加的对象
功能:在列表末尾添加对象
输出:无
>>> age_list = [12,13,14] >>> age_list.append(15) >>> age_list [12, 13, 14, 15]
clear(self):清空
输入:无
功能:清空列表
输出:无
>>> l1 = age_list >>> l1 [12, 13, 14, 15] >>> l1.clear() >>> l1 []
copy(self):浅拷贝,复制列表的父对象,不复制子对象
count(self, value):查询value参数在列表中的个数
extend(self, iterable):扩展列表元素
输入:iterable是一个对象可以是字符串、列表、字典、元组
功能:将iterable中的元素一个个添加到列表尾部
输出:无
>>> a [1, [2, 3, 4, 6], 5, 1] >>> d = '12345' >>> a.extend(d) >>> a [1, [2, 3, 4, 6], 5, 1, '1', '2', '3', '4', '5']
index(self, value, start=None, stop=None):查询value参数的位置
输入:value为要查找的值
功能:根据值查找
输出:若找到则输出第一次(左边)出现的位置,否则报错
>>> a [1, 2, 3, 1] >>> a.index(1) 0 >>> a.index(0) Traceback (most recent call last): File "<stdin>", line 1, in <module> ValueError: 0 is not in list
insert(self, index, p_object):插入
输入:index索引号,p_object要插入的对象
功能:在索引号前插入一个对象
输出:无
>>> a [1, 2, 3, 1] >>> a.insert(1,'a') >>> a [1, 'a', 2, 3, 1]
pop(self, index=None):删除(根据索引) 等于 del list[index]
输入:index索引号
功能:根据索引号删除列表里的元素,默认删除最后一个
输出:输出删除的元素,若列表为空或索引超过列表长度就会报错
>>> a [1, 'a', 2, 3, 1] >>> a.pop(1) 'a' >>> a.pop(5) Traceback (most recent call last): File "<stdin>", line 1, in <module> IndexError: pop index out of range
remove(self, value):删除(根据对象)
输入:要删除的对象
功能:根据值删除列表元素,若有多个value值,则删除左边第一个value
输出:无(若值不存在则报错)
>>> a [1, 2, 3, 1] >>> a.remove(1) >>> a [2, 3, 1]
reverse(self):将列表倒序
输入:无
功能:将列表里元素的顺序反过来
输出:无
>>> a [2, 3, 1] >>> a.reverse() >>> a [1, 3, 2]
二、元组
元组:两边是小括号,中间元素以“,”隔开,元素可以是数字、字符串、元组、列表、字典 例:a = ('a',1,[2,3],(1,2),{1:2})
索引:不同索引号对应不同元素
例 :a = (1,2,3)
a[0] = 1, a[1] = 2, a[2] = 3
切片:截取指定范围的元素
例:a = (1,2,3)
a[0:1] = (1,) , a[0:2] = (1,2) 注:当元组只有一个元素时后面一定要加逗号才表示元组
长度:表示元组的长度
例:a = (1,2,3)
len(a) = 3
循环:使用循环遍历元组
例: for item in a
内置功能:
count(self, value):同列表count函数,计算value参数在元组里的个数
index(self, value, start=None, stop=None): 输出指定范围第一个(左边)value参数的位置
三、元组和列表区别
1、元组不可以添加或删除元素,列表可以
2、元组只有一个元素时一定要以逗号结尾,列表不需要