函数,面向过程的叫法(C语言中).方法,面向对象(Python中).属于某个人私有的.函数是公共的.二者本质上一样的实现思想.
存储多个数据,每个数据称之为元素.
格式:[元素1,元素2...]
列表中尽可能存储同类型数据,且代表的含义要一致.实际上可以存储不同类型的数据.
1.增加元素:
list1 = [1, 2, 3] list1.append("大爷哟") # 元素添加到列表尾部
2.插入元素:
list1 = [1, 2, 3] list1.insert(0, '王五') # 根据索引插入到指定位置,原来的元素依次向后移一位
3.合并列表:
list1 = [1, 2, 3] list2 = ['水手', '司机'] list1.extend(list2) # extend:扩展,将list2列表中的元素放到list1中
4.删除元素:
list1 = [1, 2, 3] list1.remove(1) # remove(指定元素)直接删除指定元素
list1 = [1, 2, 3, '水手', '菠菜'] del list1[4] # del()根据索引删除指定元素
list1 = ['张珊', '李四', '王五'] print(list1.pop()) # 默认是弹出最后一个元素 print(list1.pop(1)) # 删除指定索引元素,并且把删除的元素返回,使用print()函数可以查看删除的元素是啥
注意:pop()弹出指定索引的元素之后,原来list的索引发生相应改变
形如:这样的 class list def pop(self, index: int = -1) Inferred type: (self:
list, index:
int) -> TypeVar('_T')
出现 -> 后面有东西,说明这个函数是有返回值的.意思就是可以将这个值赋值给一个变量,并显示出来.
5.清空列表:
list1 = ['张珊', '李四', '王五'] list1.clear() # 清空列表
6.修改列表:
list1 = ['张珊', '李四', '王五'] list1[0] = 'ml' # 就是把指定索引位置的元素重新赋值了
7.查询指定元素:
list1 = ['张珊', '李四', '王五'] name = list1[1] # 查询索引为1的元素
8.查询元素对应的索引(即位置):
list1 = ['张珊', '李四', '王五','我','你','他'] index1 = list1.index('王五',1, 5) # 控制查找范围(1,5),意思就是从索引1开始查找,一直查到索引为5的位置(不包括5)
9.统计元素出现的次数,计数功能:
list1 = ['张珊', '李四', '王五','我','我','我','你','他'] count1 = list1.count('我') # 统计元素出现次数
10.获取列表长度(即包含的元素的总数):
list1 = ['张珊', '李四', '王五','我','我','我','你','他'] print(len(list1)) # 获取list长度,即获取元素总个数
11.某元素是否存在于列表中:
list1 = ['张珊', '李四', '王五','我','我','我','你','他'] if '张珊' in list1: print('在') else: print('不在')
12.列表排序:
list1 = [2, 3, 1, 4] # key 用来指定排序规则 # reverse 控制升降序 list1.sort() # 默认是升序 print(list1) list1 = [2,3,1,4] list1.sort(reverse=True) print(list1) list2 = ["5", 2, 1, "4", 3] list2.sort(key=int) # 让列表中元素在比大小时,按整数类型比较,只是在比较过程中将"5"这个字符 当成数字5 print(list2) list3 = ["zhangsan", "lisi", "wangwu"] list3.sort(key=len) print(list3) list3.sort(key=len, reverse=True) # 按照字符串长度比较大小,让列表中的元素以字符串长度排序 print(list3) list1.reverse() # 让列表中的元素进行反转,倒置 print(list1) # Python内置库排序演示 import keyword print(keyword.kwlist)
13.遍历列表:
list1 = ["zhangsan", "lisi", "ww", "ml"] # 从头到尾取出列表中每个元素称之为遍历 # while方式遍历 i = 0 while i < len(list1): # 写的灵活变通 element = list1[i] print(element) i += 1 print(list1[0]) # for循环方式遍历 # for 专门为了对列表类型进行遍历 for element in list1: # 自动从0索引开始进行循环,一直到最后一个索引的值(直到取不出来元素了) print(element) print('完成!') # for循环本质是一个迭代器,只要能一个一个的取出就是迭代 # 无限循环才会用while True # 所有程序都是无限循环,除非遇到bug自动重启了这种问题 while True: break # 跳出循环 # 列表嵌套(二维列表),一般二维的列表, # 循环嵌套配合列表嵌套使用
14.列表嵌套:
"""8个老师随机分配到3个教室""" import random # 定义一个列表变量,表示老师 teachers = ['A', 'B', 'C', 'D', 'E', 'F', 'G', 'H'] # 每个老师只分配一次 # office1 = [] # office2 = [] # office3 = [] # 优先顺序:保证功能实现 school = [[], [], []] # 表示学校,学校里面有3个小办公室 # 1.遍历老师列表 for name in teachers: # 安排老师是有顺序的,name是从A开始一直到H的 # index = random.randint(0,(len(school) - 1)) # 随机数直接从0开始产生,因为0代表了索引位置的起始位置,这样会少了一部计算 # office = school[index] # 获取某个办公室列表 # office.append(name) # 把老师添加到办公室中 警告信息提示类型推导不一致 school[random.randint(0, len(school) - 1)].append(name) print(school) # 2.遍历学校列表,取出每一个办公室列表 i = 1 # 计数变量表示第几个办公室 for office in school: print("第%d个办公室有%d个老师" % (i, len(office))) i += 1 # 2.1 遍历办公室的小列表,取出办公室中的每个老师 for name in office: print(name) # 外循环代表了行,内循环代表了列,下面的3行6列 # [['B'], # ['H'], # ['A', 'C', 'D', 'E', 'F', 'G']] # 为了不让教室出现空的情况,需要加if进行判断,只要保证每个教室的长度<3就可以.即判断到有教室的长度为3时,就不再往这个教室添加老师