【Python零基础】19天从零开始学Python——第六天列表

第六天 列表的学习

一、列表的应用场景

一次性存储多个数据,用列表。
场景:若一次性存储100个孩子的姓名

二、列表的格式

[数据1,数据2,数据3…]
尽可能是相同类型

三、列表的常用操作

1、查找(下标、函数)

列表查找函数的两种方法
一、下标 print(序列名[下标号])
二、函数 index()、count()、len()
index(数据,开始位置下标,结束位置下标)返回指定数据所在位置的下标
count(数据)统计指定数据在当前列表中出现的次数
len(数据)访问列表的长度,即列表中数据的个数

下标

# 一、下标
# name_list = ['lisa','Ton','ROSE']
# print(name_list)  # ['lisa', 'Ton', 'ROSE']
# print(name_list[2])  # ROSE

函数index()、count()、len()

# 二、函数
# index()
name_list = ['lisa','Ton','ROSE']
print(name_list.index('Ton'))  # 1
print(name_list.index('ROSE'))  # 2

# count()
name_list = ['lisa','Ton','ROSE']
print(name_list.count('lisa'))  # 1
print(name_list.count('li'))  # 0

2、判断

in 和 not in

判断指定的数据是否存在某个列表序列:in /not in
in 如果在,返回True,否则False
not in如果不在返回True,否则True
格式:
‘数据’ in 列表名
‘数据’ not in 列表名

name_list = ['lisa','Ton','ROSE']
print('lisa' in name_list)  # True
print('sed' not in name_list)  # True

2-1、列表判断的体验案例

需求:查找用户输入的名字是否存在

name_list = ['lisa','Tom','HM']
# 输入名字
name = input('请输入您的邮箱账号名:')
# if else判断
if name in name_list:
    print(f'您输入的邮箱名{name}已经存在,可以直接登录')
else:
    print('可以注册')

3、增加

一、增加数据,作用:增加指定数据到列表中
语法:字符串.函数(增加数据)
1、增加数据append():列表结尾追加数据,会将序列以[]的形式追加到后面,不包括 'HM’的
2、extend():列表结尾追加数据,会将序列逐一拆开加到列表的结尾
3、insert(位置下标,数据):指定位置增加数据

append()

# 1、增加数据,列表是可变的,可以追加整个序列dao列表的结尾
name_list = ['lisa', 'Tom', 'HM']
# name_list.append('MO')
name_list.append([11,22]) # ['lisa', 'Tom', 'HM', [11, 22]]
print(name_list)  # ['lisa', 'Tom', 'HM', 'MO']

extend()

# 2、extend():列表结尾追加数据,会将序列逐一拆开加到列表的结尾
name_list = ['lisa', 'Tom', 'HM']
name_list.extend('MO')  # ['lisa', 'Tom', 'HM', 'M', 'O', 11, 22]
name_list.extend([11,22]) # ['lisa', 'Tom', 'HM', 11, 22]
name_list.extend(['MOO','MOOO'])  # ['lisa', 'Tom', 'HM', 'MOO', 'MOOO']
print(name_list)

insert(位置下标,数据)

# 3、insert():指定位置增加数据
name_list = ['lisa', 'Tom', 'HM']
name_list.insert(0,'lili')
print(name_list)  # [ 'lili','lisa', 'Tom', 'HM']

4、删除

del 列表名 del 列表名[下标]

pop()、remove()、clear()

二、删除数据
1、del 可以全部删除;可以删除指定下标的数据
语法del 列表名 del 列表名[下标]
2、pop()删除指定下标,若是没有指定,删除最后一个;有返回函数
语法:列表名.pop()
3、remove(数据)移除列表中数据,若有多个,移除第一个匹配项
4、clear()清空列表

name_list = [ 'lili','lisa', 'Tom', 'HM']
# 1、两种写法:del 列表名,del(列表名)
# del name_list
# del(name_list)
# print(name_list)  # 删除了,name 'name_list' is not defined
del name_list[0]
print(name_list)  # ['lisa', 'Tom', 'HM']

# 2、pop()返回,默认最后1个
del_name=name_list.pop()
# del_name=name_list.pop(1)
print(del_name)
print(name_list)
# HM
# ['lisa', 'Tom']

# 3、remove()移除列表中数据,若有多个,移除第一个匹配项
name_list.remove('Tom')
print(name_list)
# ['lisa']

# 4、clear()清空列表
name_list.clear()
print(name_list)
# []

5、修改

列表名[]

逆置:列表名.reverse()

排序:列表序列.sort(reverse = False)

列表修改
1、修改制定下标的数据:列表名[]
2、逆置:列表名.reverse()
3、排序:列表序列.sort(key = None ,reverse = False)False时是升序,True时是降序

# 1、修改制定下标的数据:列表名[]
name_list = [ 'lili','lisa', 'Tom', 'HM']
name_list[0]='Jerry'
print(name_list)  # ['Jerry', 'lisa', 'Tom', 'HM']
print(name_list[0])  # Jerry
print(name_list.index('Jerry'))  # 0

# 2、逆置:reverse()
lst1 = [1,2,3,4,5,6]
lst1.reverse()
print(lst1)  # [6, 5, 4, 3, 2, 1]

# 3、sort()排序升序、降序
lst1 = [1,2,3,4,5,6]
# lst1.sort()
# print(lst1)  # 默认是升序
# lst1.sort(reverse=False)  # [1, 2, 3, 4, 5, 6]
lst1.sort(reverse=True)  # [6, 5, 4, 3, 2, 1]
print(lst1)

6、复制(一份修改、一份保留)

copy()

列表复制数据:
目的:在做删除、修改的时候,我们会先复制一份数据,用作保留。
工作场景、爬虫爬取、用户注册邮箱累积起来的等,数据来源不容易。
copy(),复制完存在一个变量中

name_list = [ 'lili','lisa', 'Tom']
list1 = name_list.copy()
print(name_list)
print(list1)

衍生

如何将新得到的数据凭借到原列表后(实际工作中不需要,此为巩固知识点)

# 采用extend函数
name_list.extend(list1)
print(name_list)
['lili', 'lisa', 'Tom', 'lili', 'lisa', 'Tom']

总结

注意:
没有返回值,所以不能print直接(修改后的函数(参数))
只有pop()是有返回值的

7、列表的遍历(工作中,优选for循环,因为简便)

遍历:按顺序依次访问到列表中的每一个数据,两种方式:while和for

while循环

# 一、while遍历列表
name_list = ['Tom','Lily','Rose']
i=0
while i<len(name_list):
    print(name_list[i])
    i += 1
# Tom
# Lily
# Rose

for循环

# 二、for遍历列表
name_list1 = ['Tom','Lily','Rose','Jerry']
for i in name_list1:
    print(i)
# Tom
# Lily
# Rose
# Jerry

8、列表嵌套(可以嵌套多层)

即一个列表中包含了其他的子列表

name_list = [['小明','小红','小花'],['Tome','Lily','Rose'],['zhangsan','lisi','wangwu']]
print(name_list)
# 列表嵌套时的数据查询
print(name_list[0])  # ['小明', '小红', '小花']
print(name_list[0][1])  # 小红

可以多次嵌套

# 无论多少层,多按照下标去查找即可
digital = [[[1,2],[3,4]],[[5,6],[7,8]],[[9,10],[11,12]]]
print(digital[0][0][0])  # 1

https://www.bilibili.com/video/BV1gf4y1S7Y9?p=124

四、综合应用——随机分配办公室

# 需求:8位老师随机分配到3个办公室
import random
# 1、准备数据
teachers = ['A','B','C','D','E','F','G','H']
offices = [[],[],[]]

# 2、随机分配,将老师列表追加到offices里面
for name in teachers:
    num = random.randint(0,2)
    offices[num].append(name)
print(offices)

# 3、遍历办公室的人数以及相对应的人名
i = 1
for office in offices:
    print(f'办公室{i}的人数是{len(office)}')
    for name in office:
        print(name ,end='...')
    print()
    i += 1

运行结果:(随机的)
[[‘B’, ‘C’], [‘A’, ‘D’, ‘E’, ‘F’, ‘G’], [‘H’]]
办公室1的人数是2
B…C…
办公室2的人数是5
A…D…E…F…G…
办公室3的人数是1
H…

五、列表的总结

  • 列表的常用操作
  • 查找

列表查找函数的两种方法
一、下标 print(序列名[下标号])
二、函数 index()、count()、len()
index(数据,开始位置下标,结束位置下标)返回指定数据所在位置的下标
count(数据)统计指定数据在当前列表中出现的次数
len(数据)访问列表的长度,即列表中数据的个数

  • 判断

判断指定的数据是否存在某个列表序列:in /not in
in 如果在,返回True,否则False
not in如果不在返回True,否则True
格式:
‘数据’ in 列表名
‘数据’ not in 列表名

  • 增加数据

作用:增加指定数据到列表中
语法:字符串.函数(增加数据)
1、增加数据append():列表结尾追加数据,会将序列以[]的形式追加到后面,不包括 'HM’的
2、extend():列表结尾追加数据,会将序列逐一拆开加到列表的结尾
3、insert(位置下标,数据):指定位置增加数据

  • 删除数据

1、del 可以全部删除;可以删除指定下标的数据
语法del 列表名 del 列表名[下标]
2、pop()删除指定下标,若是没有指定,删除最后一个;有返回函数
语法:列表名.pop()
3、remove(数据)移除列表中数据,若有多个,移除第一个匹配项
4、clear()清空列表

  • 列表修改

1、修改制定下标的数据:列表名[]
2、逆置:列表名.reverse()
3、排序:列表序列.sort(key = None ,reverse = False)False时是升序,True时是降序

  • 列表的遍历(工作中,优选for循环,因为简便)

遍历:按顺序依次访问到列表中的每一个数据,两种方式:while和for

  • 列表嵌套

即一个列表中包含了其他的子列表

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值