列表

函数,面向过程的叫法(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时,就不再往这个教室添加老师
原文地址:https://www.cnblogs.com/huaibin/p/12095386.html