Python | 不就是数据类型吗(列表篇)

tech2024-08-15  42

列表(list)

一、初识列表

1.定义

列表是一个可修改的,元素以逗号分割,以中括号包围的有序序列。

2.特点

有顺序,可重复,可修改,可存放不同数据类型的多个数据,由中括号包围

3.声明
列表名 = list()列表名 = [] # 创建一个空列表 l1 = list() # 推荐,优先使用 l2 = [] # 不推荐,会和其他语言中数组混淆 # 创建一个非空列表 names = ["貂蝉","王昭君","杨玉环","西施"] # 推荐 age = list([17,18,19,20]) # 不推荐,语法繁琐

二、索引

列表是有序的序列,因此可以通过下标索引来获取元素

1.格式
列表名[索引值]
2.编号方式
从左到右(正向):从0开始,逐渐递增,最大索引值:长度-1从右到左(反向):从-1开始,逐渐递减,最小索引值是:-长度 # 通过索引查看元素 names = ['zs','ls','ww','ml'] # 查看ww print(names[2]) print(names[-2]) # 索引值要在正确范围内 print(names[8]) # 报错

三、切片

和索引类似,切片是通过冒号来访问一定范围内的元素,一次可以获取多个元素。 注意:切片是将序列拷贝,操作的是拷贝对象,不是原序列。也就是说,切片操作不会改变原数列的元素。

1.格式
列表名[start:stop:step] start :起始位置,包含在内,可省略,默认为第一个元素stop :结束位置,不包含在内,可省略,默认为最后一个元素。step:步长,可省略,默认为1,正数表示从左到右顺序,负数从右到左顺序 # 通过索引查看元素 age= [1,5,1,4,8,9,10,6] # 将ls和 ww 取出来 age[1:3:1] # [5,1] age[:1] # [1] age[1:] # [5,1,4,8,9,10,6] age[1:6:2] # [5,4,9] age[::1] # 等价于 age[::],age[:] [1,5,1,4,8,9,10,6] age[-3:-1] # [9,10] age[3:1:-1] # [4,1] # 将age倒序 age[::-1] print(age) # 不影响原列表
2.注意事项
负数步长是从右到左遍历,所以负数步长的切片开始索引一定要大于结束索引开始索引和结束索引是负数时,开始索引必须小于结束索引

四、列表的拼接(+)和重复(*)

1.拼接
print('hello'+' world !') # 'hello world !' [1,2,3]+['zhangsan','lisi','wangwu'] [1, 2, 3, 'zhangsan', 'lisi', 'wangwu']

注意:只有相同类型的列表才能进行拼接操作。

2.重复

一个数字n乘以一个列表会产生一个新的列表,原来的列表会被重复n次 注意:n必须是整数

l1 = [1, 2] l2 = l1 * 3 print(l2) # [1, 2, 1, 2, 1, 2]

五、赋值

lst = [1, 2, 3, 4, 5, 6] # (1)变量数和列表元素个数一样 a, s, d, f, g, h = lst print(a, s, d, f, g, h) # 1 2 3 4 5 6 # (2)变量数和列表元素个数不一样 # a,s,d,f = lst # 报错 # *可以把剩下的元素压缩,如果不剩为空,*只能有一个 a, s, d, *f = lst print(a, s, d, f) # 1 2 3 [4, 5, 6] a, s, d, f, g, h, *j = lst print(a, s, d, f, g, h, j) # 1 2 3 4 5 6 [] a, s, d, *f, g = lst print(a, s, d, f, g) # 1 2 3 [4, 5] 6

注意:变量数量和元素数量需保持一致。如果不一致需要用*变量名这种格式来接收多个元素值,与位置无关。

六 、增删改查

1.增加数据
方法描述append(item)将item(整数、字符串、列表…)添加到列表末尾位置。insert(pos,item)将item插入到指定位置。pos如果超过最大索引,将item加到末尾;pos如果小于最小索引,将item加到开头。extend(iterable)末尾一次性追加另一个序列中的多个值。 lst = [1, 2, 3, 4, 5] # append lst.append(6) # [1, 2, 3, 4, 5, 6] lst1 = lst.append(7) # None 列表的增加操作是在原列表上进行的,不会返回新列表 lst2 = lst.append(11,22,33,44,55) # 报错 append()一次只能添加一个值 # insert lst.insert(2, '222') # [1, 2, '222', 3, 4, 5] lst.insert(100, '99999') # [1, 2, 3, 4, 5, '99999'] lst.insert(-100, -8888) # [-8888, 1, 2, 3, 4, 5] # extend lst.extend("asdf") # [1, 2, 3, 4, 5, a, s, d, f] lst.extend("") # [1, 2, 3, 4, 5] lst.extend(" ") # [1, 2, 3, 4, 5, ' '] lst.extend([9, 8, 7]) # [1, 2, 3, 4, 5, 9, 8, 7] lst.extend([]) # [1, 2, 3, 4, 5] lst.extend(range(1,100))
总结
append()和insert()一次只能添加一个元素,添加多个需要用extend()extend()只有一个参数,且必须是一个可迭代对象,如果是空的,则什么也不添加。
2.删除数据
方法描述pop(index)删除指定位置元素,不写默认为最后一个元素,并返回该元素的值。remove(item)删除指定的一个数据,如果有多个,只删除第一个。没有返回值。 数据不存在会报错。del 列表名[]删除列表中的数据或整个列表。del不是列表独有的方法,是Python的内置功能。clear()清空列表数据。 i = [1, 2, 3, 4, 5, 6, 2] # pop li.pop() # 删除最后一个元素 # 删除指定位置元素 li.pop(3) # 删除元素4 li.pop(100) # 报错,索引错误 # remove li.remove(3) # 删除元素3本身 li.remove(10) # 错误,元素不存在 li.remove(2) # 删除第一次出现的元素 # del del li[3] # 删除一个元素 del li[2:5] # 删除多个元素 del li # 删除li这个列表 # clear li.clear() # [] 清空li
3.修改数据
方法描述列表名[index]列表名[index] = new_value。将值赋给指定位置元素。reverse()顺序倒序。返回一个新列表。sort()按照ASCII码表顺序进行排序,同种类型才可以比较。返回一个新列表。 # 列表名[index] = new_value li = [1,2,3,4,5,6,2] li[2] = 30 # [1, 2, 30, 4, 5, 6, 2] li = [1, 2, 3, 4, 5, 6] # reverse()翻转列表 li.reverse() # [6, 5, 4, 3, 2, 1] # sort()排序 l2 = [1, 5, 6, 8, 31, 23, 5, 9] l2.sort() # 正序 [1, 5, 5, 6, 8, 9, 23, 31] l2.sort(reverse=True) # 倒序 [31, 23, 9, 8, 6, 5, 5, 1]
4.查询数据
方法描述for循环遍历查询列表中所有数据(一条一条的),自定义查看方式直接使用列表名称查看所有数据(中括号括起来的一条数据)index()查看某个数据第一次出现的位置,并返回下标列表名[下标]查看某个位置的数据count()查看某个数据出现的次数 # index() li = [1, 2, 3, 4, 5, 6, 2] li.index(2) # 1 li.index(10) # 报错 # count() li.count(10) # 0 li.count(2) # 2 li.count(3) # 1
5.其他操作
方法描述len(列表名)列表长度,即列表中元素个数max(列表名)列表中元素最大值(数据类型相同,且可以比较)min(列表名)列表中元素最小值(数据类型相同,且可以比较)copy()复制列表

七、列表嵌套

li = [1,2,3,[4,5,6]] print(li[1]) # 2 print(li[3][1]) # 5 print(len(li)) # 4

八、列表推导式(高级操作)

1.格式
变量名= [表达式 for 变量 in 列表] 变量名= [表达式 for 变量 in 列表 if 条件]
2.执行流程

遍历出列表中的内容给变量,表达式根据变量值进行逻辑运算 或者遍历列表中的内容给变量,然后进行判断,符合的值在给表达式

# 案例1:将lst中每一个元素进行平方后放入到一个新列表中 lst = [1, 2, 3, 4, 5] l2 = [i*i for i in lst] # 案例2:将lst中的奇数放到一个新列表中 lst = [1, 2, 3, 4, 5, 6, 7, 8] l3 = [i for i in lst if i % 2 == 1] # 案例3.将一个嵌套列表转换成一个一维列表 #lst = [[1, 2, 3], [4, 5, 6], [7, 8, 9]] # 转换成:lst2=[1, 2, 3, 4, 5, 6, 7, 8, 9] lst = [[1, 2, 3], [4, 5, 6], [7, 8, 9]] l4 = [j for i in lst for j in i] # 案例4:现在有一列表lst = [[1,2,3],[4,5,6],[7,8,9]]要求取出[1,4,7] 和 [1,5,9] 元素 lst = [[1, 2, 3], [4, 5, 6], [7, 8, 9]] lst_1 = [i[0] for i in lst] lst_2 = [lst[i][i] for i in range(len(lst))]
3.推导式好处和不足
优点:简化代码,提高代码的简洁性不足:降低代码的可读性
最新回复(0)