Python基础之数据类型II
3.List(列表)
-
引子
我们现在已经学过的基础数据类型: int float str bool,str类型可以帮我们存储少量的数据,但是str有什么缺点?
-
str存储的数据量相对是少量的。
-
str存储的数据无论通过切片、索引还是各种方法得到数据都是字符串类型。
针对以上str的两个缺点,python引入了列表这种数据类型的概念。
-
3.1列表的介绍
-
列表,是python中的常用的基础数据类型之一,他是通过[]括起来,里面的元素通过逗号隔开的容器型数据类型。
# 数据类型可以按照不同的角度进行分类: # 按照容器与非容器的角度进行分类: # 容器型数据类型: list,tuple,dict, set. # 非容器型数据类型:int float bool str。
列表是有序的,列表相比于字符串,不仅可以储存不同的数据类型,
而且可以储存大量数据,32位python的限制是 536870912 个元素,
64位python的限制是 1152921504606846975 个元素。
而且列表是有序的,有索引值,可切片,方便取值。
3.2索引与切片
列表的索引与切片和字符串的索引与切片几乎一模一样。
-
索引
# 索引 lst = [1, 2, 3, 4, 5, 6] # ret = lst[0] # print(ret, type(ret)) # print(lst[2]) print(lst[-1]) print(lst[-3])
-
切片
# 正向切, 顾头不顾腚 lst = [1, 2, 3, 4, 5, 6] # print(lst[:3]) # print(lst[:]) # print(lst[:-1:2]) # -------------- # 反向切, 一定要加一个反向步长-1 lst = [1, 2, 3, 4, 5, 6] # print(lst[-1:-4:-1]) # print(lst[-1:-4]) # print(lst[2::-1]) # print(lst[-1::-2])
3.3 列表的操作
3.3.1增
-
lst = ['豪哥', '明哥', '天哥', '轩哥', '菜哥', '宏哥'] # append 追加 # lst.append('旋哥') # print(lst) # -------------- # insert 插入 # lst.insert(2, '博哥') # print(lst) # lst.insert(-2, '超哥') # print(lst) # -------------- # extend 迭代着追加 # lst.extend('allen') # lst.extend(['abc', 'aaa', 'bbb']) lst.extend(100) # 错误 print(lst)
3.3.2删
-
lst = ['豪哥', '航哥', '天哥', '轩哥', '菜哥', '宏哥'] # 按照索引删除 pop 有返回值 # ret = lst.pop(2) # print(ret) # print(lst) # -------------- # 按照元素删除 remove 只是删除第一个 # lst.remove('航哥') # print(lst) # -------------- # 清空 clear # lst.clear() # print(lst) # -------------- # del # 删除列表 # del lst # -------------- # 按照索引删除 # del lst[3] # 按照切片删除 # del lst[:3] # 按照切片+步长删除 del lst[:-2:2] print(lst)
3.3.3改
-
# print(lst[0]) # 按照索引修改 # lst[0] = '珍哥' # -------------- # 按照切片修改(迭代着改) # lst[-3:] = 'abcde' # lst[-3:] = [100, 200, 300, 400, 500] # -------------- # 按照切片+步长修改(迭代着改)一一对应 # lst[:-2:2] = 'abc' lst[:-2:2] = 'abcd' # 一一对应 print(lst)
3.3.4查
-
# 按照索引查询 lst = ['豪哥', '航哥', '天哥', '轩哥', '菜哥', '宏哥'] print(lst[0]) print(lst[5]) # -------------- # 按照切片(步长)查询 print(lst[:5]) print(lst[3:]) # -------------- # for循环查询 for i in lst: print(i)
3.4列表的嵌套
-
lst = [1, 'allen', 'wusir', ['麻花疼', ['可口可乐'], '王健林']] # 查找麻花疼 数据。 # print(lst[-1][0]) # 将可口可乐改成百事可乐。 # l1 = lst[-1][1] # # print(l1) # l1[0] = '百世可乐' # print(lst) # 简写 lst[-1][1][0] = '百世可乐' print(lst) l1 = [1, 2, 'taibai', [1, 'alex', 3, ]] # 1, 将l1中的'taibai'变成大写并放回原处。 # print(l1[2].upper()) # l1[2] = l1[2].upper() # print(l1) # 2,给小列表[1,‘alex’,3,]追加一个元素,nba选秀大会'。 # l1[-1].append('nba选秀大会') # print(l1) # 3,将列表中的'alex'通过字符串拼接的方式在列表中变成'alexsb'。 # print(l1[-1][1]) # l1[-1][1] = l1[-1][1] + 'sb' # a = a + 1 a += 1 l1[-1][1] += 'sb' print(l1)
4.Tuple(元组)
-
引子
python中的基础数据类型之一,容器型的数据类型,可以存储大量的数据,tuple也称为元组,元组是不可变的数据类型,存在元组里面的元素只能查询不能增删改。元组也称为只读列表。我们存放一些非常重要的数据。
# 数据类型的分类:可变与不可变。 # 可变的数据类型:对原数据可以进行增删改等操作。list,dict,set. # 不可变的数据类型:对原数据可以进行增删改等操作。 int,float,str,tuple.
-
基本操作
tu1 = ('bary', 100, True, [1, 2, 3], (22, 33)) # 索引与切片 # print(tu1[0]) # print(tu1[:3]) # print(tu1[::2]) print(tu1[-1:-3:-1])
-
元组没有增删改的操作,只能查询,不能更改
tu1 = (100, True, [1, 2, 3], (22, 33)) del tu1[0] print(tu1) # 报错
-
注意点
-
元组的儿子不能改,但是孙子有可能改。(不这么用)
tu1 = ('bary', 100, True, [1, 2, 3], (22, 33)) # tu1[0] = 666 # print(tu1) tu1[-2][0] = 666 print(tu1)
-
-
元组中如果只含有一个元素,并且没有逗号,则它不是元组,他的类型与该元素的类型保持一致。
# tu1 = ('bary',) # print(tu1, type(tu1)) # # tu1 = ('bary') # print(tu1, type(tu1)) tu1 = ([1,2,3], ) print(tu1, type(tu1)) tu1 = ([1,2,3]) print(tu1, type(tu1))