python之列表的学习(增删改查、遍历、嵌套)

本文详细介绍了Python列表的操作,包括查找、判断是否存在、增加、删除、修改和复制等基本操作。通过下标、函数如index()、count()等进行查找,使用append()、extend()、insert()增加元素,用del、pop()、remove()和clear()删除元素,以及如何修改和排序列表。同时,文章还讨论了列表的遍历方法和嵌套使用。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

一、列表的格式

[数据1,数据2,数据3]
列表可以一次性存储多个数据,且可以为不同的数据类型

二、列表的常用操作

增、删、改、查

1.查找

(1)下标

list1=['aa','vv','nihao']
print(list1[0])   #返回aa
print(list1[1])   #返回vv
print(list1[2])   #返回nihao

(2)函数

  • index() :返回指定数据所在位置的下标
    语法:列表序列.index(数据,开始位置下标,结束位置下标)
  • count():统计指定数据在当前列表中出现的次数
  • len(): 访问列表长度,即列表中数据的格式
list1=['aa','vv','nihao']
#1.index()
print(list1.index('vv',0,2))   #返回1,因为vv的下标是1,下标是从0开始的
#2.count()
print(list1.count('aa'))  #返回1,aa只出现过一次,如果数据不存在,则返回0
#3.len()
print(len(list1))   #返回3,list1有3个

2.判断是否存在

  • in:判断指定数据在某个列表序列,如果在返回true,否则false
  • not in:判断指定数据不在某个列表序列,如果不在返回true,否则false
list1=['aa','vv','nihao']
print('aa' in list1)    #返回true
print('vv' not in list1)  #返回false

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

name_list = ['czd', 'lcq', 'lining']
name = input("请输入要搜索的名字:")
if name in name_list:
    print(f'你输入的名字为{name},名字已经存在')
else:
    print(f'你输入的名字为{name},名字不存在')

输入czd,返回你输入的名字是czd,名字已经存在
输入czd,返回你输入的名字是czd,名字已经存在

3.增加: 增加到指定数据到列表中

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

语法:列表序列.append(数据)

name_list = ['czd', 'lcq', 'lining']
name_list.append('xiaoming')
print(name_list)
#返回['czd', 'lcq', 'lining', 'xiaoming']
name_list.append([11,20])
print(name_list)
#返回['czd', 'lcq', 'lining', 'xiaoming', [11, 20]]
append() ==追加的数据是一个序列。则追加整个序列到列表==

注:列表追加数据的时候,直接在原列表里追加指定的数据,即修改了原列表 ,故列表为可变类型

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

语法:列表序列.extend(数据)

name_list = ['czd', 'lcq', 'lining']
name_list.extend('xiaoming')
print(name_list)
#返回['czd', 'lcq', 'lining', 'x', 'i', 'a', 'o', 'm', 'i', 'n', 'g']
name_list.extend(['ximing','xiaohong'])
print(name_list)
#返回['czd', 'lcq', 'lining', 'x', 'i', 'a', 'o', 'm', 'i', 'n', 'g', 'ximing', 'xiaohong']

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

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

name_list = ['czd', 'lcq', 'lining']
name_list.insert(2,'xiaoming')
print(name_list)
#返回['czd', 'lcq', 'xiaoming', 'lining']
name_list.insert(1,['ximing','xiaohong'])
print(name_list)
#返回['czd', ['ximing', 'xiaohong'], 'lcq', 'xiaoming', 'lining']

4.删除

(1)del

语法: del 目标

  • 删除列表
  • 删除指定下标数据
name_list = ['czd', 'lcq', 'lining']
#del name_list # 返回报错,说明已经删除

del删除下标的数据
del name_list[0]
print(name_list)   #返回['lcq', 'lining'],删除了第一个数据
在这里插入代码片

(2)pop(): 删除指定下标数据,如果不指定下标,默认删除最后一个数据,

注:==无论是按照下标还是删除最后一个,pop函数都会返回被删除的数据
语法: 列表序列.pop(下标)

name_list = ['czd', 'lcq', 'lining']
del_name = name_list.pop()
#print(del_name)   #返回lining,因为默认删除最后一个数据,返回最后一个数据
#print(name_list)   #返回['czd', 'lcq']
指定下标删除的数据
name_list = ['czd', 'lcq', 'lining']
del_name = name_list.pop(0)
print(del_name)   #返回czd,因为指定删除下标为0 的数据,返回czd数据
print(name_list)   #返回['lcq', 'lining']

(3)remove(数据):移除某个数据的第一个匹配项

语法:列表序列.remove(数据)

(4)clear():清空列表

语法:列表序列.clear()

5.修改

(1)修改指定下标数据

name_list = ['czd', 'lcq', 'lining']
name_list[0]='aaa'   #找到下标直接赋值
print(name_list)  #返回['aaa', 'lcq', 'lining']

(2)逆序reverse()

list1=[1,2,3,4,5,6]
list1.reverse()
print(list1)   #返回[6, 5, 4, 3, 2, 1]

(3)排序sort()

语法:列表序列.sort(key=none,reverse=False)
注:reverse表示排序规则,reverse=true降序,reverse=false升序(默认)

list1=[1,2,3,7,5,6]
#list1.sort()   #返回[1, 2, 3, 5, 6, 7]
#list1.sort(reverse=False)   #返回[1, 2, 3, 5, 6, 7]
list1.sort(reverse=True)   #返回[7, 6, 5, 3, 2, 1] 降序
print(list1)

6.复制

(1)copy()

name_list = ['czd', 'lcq', 'lining']
name_list1=name_list.copy()
print(name_list1)
print(name_list)
#返回['czd', 'lcq', 'lining']
    ['czd', 'lcq', 'lining']

三.列表的遍历

1.while

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

name_list = ['czd', 'lcq', 'lining']
i=0
while i<len(name_list):
    print(name_list[i])
    i+=1

在这里插入图片描述在这里插入图片描述

2.for

for循环遍历数据
name_list = ['czd', 'lcq', 'lining']
for i in name_list:
    print(i)

在这里插入图片描述

四.列表的嵌套

列表嵌套就是一个列表里面包含了其他的子列表
name_list = [[‘czd’, ‘lcq’, ‘lining’],[‘aa’,‘ss’,‘ww’],[‘qqwq’,‘wecfr’]]
print(name_list[2][1])
查找到的数据是下标为2的子列表中的下标为1的数据

例题

需求:8位老师,3个办公室,将8位老师随机分配到3个办公室

"""
步骤:
1.准备数据
    8位老师---列表
    3个办公室--列表嵌套
2.分配到办公室
    *** 随机分配
    办公室列表追加到老师办公室
3.验证是否分配成功
    打印每个办公室对应老师的名字
"""
代码:
#1.准备数据
teachers=['A','B','C','D','E','F','G','H']
offices=[[],[],[]]  #列表嵌套
import random   #调用随机模块
#2.分配老师到办公室--取到老师到每个办公室列表,--遍历老师列表数据
for name in teachers:
    #列表追加数据--append,extend,insert
    num = random.randint(0,2) 
    offices[num].append(name)
#3.
i=1
for office in offices:
    print(f'办公室的人数是{len(office)},老师分别是:')
    for name in office:
        print(name)
    i+=1

在这里插入图片描述
在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值