④ 列表

四、列表操作




① 列表


列表可以一次性存储多个数据,且可以为不同数据类型。

[数据1,数据2,数据3,数据4......]

列表的作用一次性存储多个数据,程序员可以对这些数据进行增、删、改、查





② 列表的常用操作方法


1、查找


所谓的列表查找方法,即是查找列表中数据的位置长度(个数)。

1.1、查找下标 返回数据

“下标”又叫“索引”,我们可以通过列表下标来获取对应数据。

# 实例
list1 = ['Tom','Ros','Lily']

print(list1[0])
print(list1[1])
print(list1[2])
-------------------------------------------------------
# 输出结果
Tom
Ros
Lily

1.2、index 查找数据

  • index(): 返回指定数据所在位置的下标。

    语法:

    列表序列.index(需要查找数据,开始位置下标,结束位置下标)
    

    实例:

    list1 = ['Tom','Ros','Lily']
    
    print(list1.index('Lily')) # 2
    print(list1.index('Tom',0,2)) # 0
    print(list1.index('Ros',0,2)) # 1
    
    # 不存在则报错
    print(list1.index('Lily',0,2)) 
    -------------------------------------------------------
    # 输出结果
    2
    0
    1
    -------------------------------------------------------
    # 报错
    Traceback (most recent call last):
      File "F:\Feature_Detection\test.py", line 7, in <module>
        print(list1.index('Boy',0,2))
    ValueError: 'Boy' is not in list
    
    

    注意:① 如果查找的数据不存在则报错。

    ② 不包含结束位置下标的数据。

1.3、count 统计出现次数

  • count(): 统计指定数据在当前列表中出现的次数。

    语法:

    列表序列.count(需要统计的数据)
    

    实例:

    list2 = ['Tom','Ros','Lily',1,1]
    
    # 指定数据在列表中出现的**次数**
    print(list2.count('Lily')) # 1
    print(list2.count(1)) # 2 
    print(list2.count('Boy')) # 0
    
    -------------------------------------------------------
    # 输出结果
    1 
    2
    0
    
    
1.4、len 计算列表长度(个数)

  • len(): 访问列表长度,即列表中的数据个数。

    # 语法
    print(len(列表))
    -------------------------------------------------------
    # 实例
    list2 = ['Tom','Ros','Lily',1,1]
    print(len(list2))
    -------------------------------------------------------
    # 输出结果
    5
    
    

2、判断


2.1、in 判断在….之内

  • in:判断指定数据是否在某个列表序列中,如果在返回True,否则返回Flase。
# 实例(in:在....之内)
name_list = ['Tom','Ros','Lily']

print('Tom' in name_list)
print('Boy' in name_list)
-------------------------------------------------------
# 输出结果
True
Flase

2.2、not in 判断不在….之内

  • not in:判断指定数据不在某个列表序列,如果不在返回True,否则返回Flase。
# 实例(not in: 不在....之内)
name_list = ['Tom','Ros','Lily']

print('Lily' not in name_list)
print('Marry' not in name_list)
-------------------------------------------------------
# 输出结果
False
True

2.3、案例体验

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

'''
 需求:注册邮箱,用户输入一个账号名,判断这个账号是否存在,如果存在则提醒用户,如果不存在则可以注册
 1.用户输入账号
 2.判断if...else...
'''
name_list = ['Tom','Ros','Lily']

name = input('请输入你的名字:')

# 判断账号名是否存在列表中
if name in name_list:
    print('你输入的名字已经存在')
else:
    name_list.append(name)
    print('注册成功')
print(name_list)
-------------------------------------------------------
# 输出结果
请输入你的名字:zjh
注册成功
['Tom', 'Ros', 'Lily', 'zjh']



3、增加


作用:增加指定数据到列表当中。

3.1、append 末尾追加数据

  • append():列表结尾追加数据。

    语法:

    列表序列.append(数据)
    

    实例:

    # 实例
    name_list = ['Tom','Ros','Lily']
    
    name_list.append('xiaoming')
    name_list.append([11,12])
    print(name_list)
    
    -------------------------------------------------------
    # 输出结果  
    ['Tom', 'Ros', 'Lily', 'xiaoming', [11, 12]]
    
    

    注意:① 列表是可变数据类型

    ② append函数追加数据的时候,如果是一个序列,追加整个序列到列表的结尾(如字典、集合)。

3.2、extend 末尾逐个追加数据

  • extend():列表结尾追加数据,如果数据是一个序列,则将这个序列的数据逐一添加到列表。

    语法:

    列表序列.extend(数据)
    

    实例:

    # 单个数据
    name_list = ['Tom','Ros','Lily']
    
    name_list.extend('xiaodong')
    print(name_list)
    
    -------------------------------------------------------
    # 输出结果
    ['Tom', 'Ros', 'Lily', 'x', 'i', 'a', 'o', 'd', 'o', 'n', 'g']
    
    
    # 序列数据
    name_list = ['Tom','Ros','Lily']
    
    name_list.extend(['zjh','xiaoming'])
    print(name_list)
    
    -------------------------------------------------------
    # 输出结果
    ['Tom', 'Ros', 'Lily', 'zjh', 'xiaoming']
    
    

    注意:extend追加数据是一个序列,把数据序列里面的数据拆开后逐一追加到列表的结尾。

3.3、insert 指定位置新增数据

  • insert():指定位置新增数据。

    语法:

    列表序列.insert(位置下标,数据)
    

    实例:

    name_list = ['Tom','Ros','Lily']
    
    name_list.insert(1,'aaa')
    print(name_list)
    
    -------------------------------------------------------
    # 输出结果
    ['Tom', 'aaa', 'Ros', 'Lily']
    
    


4、删除


4.1、del 删除数据(包括列表)

格式:

# 删除指定数据
del 列表序列[0]
-------------------------------------------------------
# 删除整个列表(包括符号)
del (列表序列)

实例:

name_list = ['Tom','Ros','Lily']

# 1. del (列表序列)
del name_list
print(name_list)

-------------------------------------------------------
# 输出结果
Traceback (most recent call last):
  File "F:\Feature_Detection\test.py", line 4, in <module>
    print(name_list)
NameError: name 'name_list' is not defined

name_list = ['Tom','Ros','Lily']

# 2. del(列表序列)
del (name_list[1])
print(name_list)

-------------------------------------------------------
# 输出结果
['Tom', 'Lily']

注意:del不止可以删除列表,还可以删除指定下标数据。

4.2、pop 删除指定下标数据

  • pop():删除指定下标的数据,如果不指定下标,默认删除最后一个数据。,无论是否指定,pop函数

    都会返回被删除的数据。

    语法:

    返回值 = 列表序列.pop(指定下标)
    

    实例:

    name_list = ['Tom','Ros','Lily']
    
    del_name = name_list.pop()
    print(del_name)
    print(name_list)
    
    -------------------------------------------------------
    # 输出结果
    Lily
    ['Tom', 'Ros']
    
    
4.3、remove 删除指定数据

  • remove():删除指定的数据。

    语法:

    列表序列.remove(指定数据)
    

    实例:

    name_list = ['Tom','Ros','Lily']
    
    name_list.remove('Ros')
    print(name_list)
    -------------------------------------------------------
    # 输出结果
    ['Tom', 'Lily']
    
    
4.4、clear 清空列表

  • clear():清空列表数据,保留列表。

    语法:

    列表序列.clear()
    

    实例

    name_list = ['Tom','Ros','Lily']
    
    # clear() -- 清空
    name_list.clear()
    print(name_list)
    -------------------------------------------------------
    # 输出结果
    []
    
    

5、修改


5.1、修改指定 下标数据

“下标”又叫“索引”,通过索引的方式将原有的数据进行修改==(修改指定下标数据)==。

# 实例
name_list = ['Tom','Ros','Lily']

name_list[0] = 'zjh'
print(name_list)
-------------------------------------------------------
# 输出结果
['zjh', 'Ros', 'Lily']

5.2、reverse 逆置排序

  • reverse():将列表数据进行逆序排序(反过来排序)。

    语法:

    # reverse:逆转
    列表序列.reverse()
    

    实例:

    # 实例
    name_list = [1,5,2,3,7,6,4]
    
    name_list.reverse()
    print(name_list)
    -------------------------------------------------------
    # 输出结果
    [4, 6, 7, 3, 2, 5, 1]
    
    
5.3、sort 升序、降序

  • sort():将列表数据进行升序或者降序。

    语法:

    # key在字典中使用,reverse默认为False(升序)
    -------------------------------------------------------
    列表序列.sort( key=None,reverse)
    
    

    实例:

    # 升序
    name_list = [1,5,2,3,7,6,4]
    
    name_list.sort()
    print(name_list)
    -------------------------------------------------------
    # 输出结果
    [1, 2, 3, 4, 5, 6, 7]
    
    
    # 降序
    name_list = [1,5,2,3,7,6,4]
    
    name_list.sort(reverse=True)
    print(name_list)
    -------------------------------------------------------
    # 输出结果
    [7, 6, 5, 4, 3, 2, 1]
    
    

6、复制


6.1、copy 复制数据

  • copy():复制数据,进行数据备份,以免发生特殊情况数据丢失。

    语法

    返回值 = 列表序列.copy()
    

    实例:

    # 实例
    name_list = ['Tom','Ros','Lily']
    
    name_list2 = name_list.copy()
    print(name_list)
    print(name_list2)
    -------------------------------------------------------
    # 输出结果
    ['Tom', 'Ros', 'Lily']
    ['Tom', 'Ros', 'Lily']
    
    


③ 列表的循环与嵌套


1、列表的循环遍历


需求:依次打印列表中的各个数据。

1.1、while 循环遍历

  • 实例

    '''
    1. 准备表示下标数据
    2. 循环while
        条件 i < len(列表) -- 每个列表数据数量不清楚
        遍历:依次按顺序访问到序列的每一个数据
        i += 1
    '''
    -------------------------------------------------------
    name_list = ['Tom','Ros','Lily']
    
    i = 0
    while i < len(name_list):
        print(name_list[i])
        i += 1
    -------------------------------------------------------
    # 输出结果
    Tom
    Ros
    Lily
    
    
1.2、for 循环遍历

  • 实例

    # 实例
    name_list = ['Tom','Ros','Lily']
    
    for i in name_list:
    	# 遍历序列中的数据
    	print(i)
    -------------------------------------------------------
    # 输出结果
    Tom
    Ros
    Lily
    

2、 列表嵌套


所谓的列表嵌套指的就是一个列表里面包含了其他的子列表。

  • 应用场景:要储存一、二、三年级的学生姓名,且每个班级的学生姓名在一个列表。

    name_list = [['小明','小红','小绿'],['Tom','Ros','Lily'],['张三','李四','王五']]
    

    如何查找数据李四

    name_list = [['小明','小红','小绿'],['Tom','Ros','Lily'],['张三','李四','王五']]
    
    # 第一步:按下标查找李四所在的列表
    print(name_list[2])
    
    # 第二步:从李四所在的列表里面,再按下标找到李四
    print(name_list[2][1])
    -------------------------------------------------------
    # 输出结果
    ['张三', '李四', '王五']
    李四
    

3、综合案例 – 随机分配办公室


需求:有三个帮手,8位老师,8位老师随机分配到3个办公室。

'''
    需求:8位老师,3个办公室,将8位老师随机分配到3个办公室
    步骤:
    1.准备数据
        1.1 八位老师 -- 列表
        1.2 三个办公室 - 列表嵌套

    2.分配老师到办公室
        *** 随机分配
        就是把老师的名字写入办公室列表 -- 办公室列表追加老师名字数据

    3. 验证是否分配成功
        打印办公室详细详细:每个办公室的人数和对应的老师名字
'''
-------------------------------------------------------
import  random

# 1. 准备数据
teachers = ['A','B','C','D','E','F','G','H']
offices = [[],[],[]]
-------------------------------------------------------
# 2. 分配老师到办公室 -- 取到每个老师放到办公室列表 -- 遍历老师列表数据
for name in teachers:
    # 列表追加数据 -- append
    num = random.randint(0,2)
    offices[num].append(name)
print(offices)
-------------------------------------------------------
# 3. 验证是否分配成功
i = 1
for office in offices:
    # 打印办公室人数 -- 子列表数据的个数 len()
    print(f'办公室{i}的人数{len(office)},老师分别是:')
    i += 1
    # 打印老师的名字
    # print() -- 每个子列表里面的名字个数不一定 -- 遍历 -- 子列表
    for name in office:
        print(name)
-------------------------------------------------------
# 输出结果
[['A', 'B', 'C'], ['D', 'E', 'G'], ['F', 'H']]
办公室1的人数3,老师分别是:
A
B
C
办公室2的人数3,老师分别是:
D
E
G
办公室3的人数2,老师分别是:
F
H

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值