Python05 数据序列-列表
创始人
2025-05-30 11:21:07

Python05 数据序列-列表

5.1 列表概述

python列表是一种有序且可变的序列,列表使用中括号[]进行定义,各项元素之间使用逗号分隔。python的列表与其他编程语言中的数组很像,但独特之处在于python可以存储任意类型的数据。
使用场景:
需要存放1000个学生的学号,安装之前的方式,我们需要定义1000个变量存储,非常麻烦,那么我们可以使用数组进行存储。

5.2 列表的定义与使用

格式:

列表名 = [数据1,数据2,数据3......]
  1. 使用中括号[]进行定义,各项元素之间使用英文逗号分隔。
  2. 列表可以一次性存储多个数据,且可以为不同数据类型。

使用:直接通过 变量名 进行 使用
案例:

ids = [1, 2, 3, 4, 5]
print(ids)  # [1, 2, 3, 4, 5]
print(ids[2])  # 3

图解:

image-20230315154738762

5.3 列表的常用操作

列表的常见操作:增、删、改、查

表1 列表的常见操作

常见操作说明
len(s)计算序列s的长度(元素个数)
min(s)返回序列s中的最小元素
max(s)返回序列s中的最大元素
list.append()在列表list的末尾添加元素x
list.extend()在列表list中添加列表lx的元素,与+=功能相同
list.insert()在列表list索引为i的元素之前插入元素x
listpop()取出并删除列表list中索引为i的元素x
List.remove()删除列表list中第一次出现的元素x
list.reverse()将列表list的元素反转
list.clear()删除列表list中的所有元素
list.copy()生成新列表,并拷贝列表list中的所有元素
list.sort()将列表list中的元素排序

5.3.1 查找

5.3.1.1 下标查找

ids = [1, 2, 3, 4, 5]
print(ids)  # [1, 2, 3, 4, 5]
print(ids[2])  # 3
print(ids[0])  # 1
print(ids[1])  # 2

5.3.1.2 函数查找

  • index():查找指定数据所在位置下标

格式:

列表.index(数据,开始位置,结束位置)
  1. 如果存在多个数据,那么返回是相匹配的第一个数据下标

  2. idnex(数据):如果不知道位置,默认整个列表中查找

案例:

ids = [1, 2, 3, 4, 5]
print(ids.index(4))  # 3
print(ids.index(4, 1, 5))  # 3
print(ids.index(4, 4, 5))  # ValueError: 4 is not in list
print(ids.index(49))  # ValueError: 49 is not in list

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

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

格式:

列表.count(数据)

案例:

ids = [1, 2, 3, 4, 5]
print(ids.count(4))  # 1
print(ids.count(9))  # 0

注意:如果数据不存在也不会报错

  • len():获取列表的长度(列表中数据的个数)

格式:

len(列表)

案例:

ids = [1, 2, 3, 4, 5]
print(len(ids) ) # 5

5.3.1.3 判断查找

  • in : 判断数据是否列表序列中,如果在返回True,否则返回False

格式:

数据 in 列表

案例:

ids = [1, 2, 3, 4, 5]
print(1 in ids ) # True
print(123 in ids ) # False
  • not in : 判断数据是否列表序列中,如果在返回False,否则返回True

格式:

数据 not in 列表

案例:

ids = [1, 2, 3, 4, 5]
print(1 not in ids ) # False
print(123 not in ids ) # True

5.3.2 增加

增加指定的数据到列表中

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

格式:

列表.append(数据)

案例:

ids = [1, 2, 3, 4, 5]
ids.append(89)
print(ids)  # [1, 2, 3, 4, 5, 89]

注意:

如果append()追加的数据是一个序列,则追加整个序列到列表

ids = [1, 2, 3, 4, 5]
nams=["张三","李四"]
ids.append(nams)
print(ids)  # [1, 2, 3, 4, 5, ['张三', '李四']]
  • extend():列表结尾追加数据,如果数据是一个序列,则将这个序列的数据逐一添加到列表。

格式:

列表.extend(数据)

案例:

ids = [1, 2, 3, 4, 5]
ids.extend("4")
ids.extend("9")
nams = ["张三", "李四"]
ids.extend(nams)
print(ids)  # [1, 2, 3, 4, 5, '4', '9', '张三', '李四']
  • insert():在指定位置插入数据。

格式:

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

案例:

ids = [1, 2, 3, 4, 5]
ids.insert(3, "in")
print(ids)  # [1, 2, 3, 'in', 4, 5]

5.3.3 删除

  • del : 删除列表 | 指定下标数据

格式:

del 列表 | 列表[下标]

案例:

# 删除指定数据
ids = [1, 2, 3, 4, 5]
del ids[2]
print(ids)  # [1, 2, 4, 5]
# 删除整个列表
del ids
print(ids)  # NameError: name 'ids' is not defined

del 删除时不指定下标,会删除整个列表,并释放内存空间

  • pop():删除指定下标的数据(默认为最后一个),并返回该数据。

格式:

列表.pop(下标)

案例:

ids = [1, 2, 3, 4, 5]
# 删除指定下标数据
print(ids.pop(2))  # 3
print(ids)  # [1, 2, 4, 5]
# 不指定下标,默认删除最后一个
print(ids.pop())  # 5
print(ids)
  • remove():删除列表中指定数据的第一个匹配项。

格式:

列表.remove(数据)

案例:

ids = [1, 2, 3, 4, 5]
ids.remove(1)
ids.remove(10)# ValueError: list.remove(x): x not in list
print(ids)

如果删除的数据不存在,就会报错 ValueError: list.remove(x): x not in list

  • clear():清空列表

格式:

列表.clear()

案例:

ids = [1, 2, 3, 4, 5]
ids.clear()
print(ids)  # []

5.3.4 修改

  • 通过下标修改

格式:

列表[下标] = 数据

案例:

ids = [1, 2, 3, 4, 5]
ids[0] = 99
print(ids)  # [99, 2, 3, 4, 5]
  • reverse():倒叙反转

格式:

列表.reverse()

案例:

ids = [1, 2, 3, 4, 5]
ids.reverse()
print(ids)  # [5, 4, 3, 2, 1]
  • sort():排序

格式:

列表.sort(key=None,reverse=True | False )

reverse=True : 倒序(降序) ,reverse=False:正序(升序,默认)

案例:

ids = [6, 0, 1, 99, 3, 4, 5]
ids.sort()
print(ids)  # [0, 1, 3, 4, 5, 6, 99]
ids.sort(reverse=True)
print(ids)  # [99, 6, 5, 4, 3, 1, 0]
ids.sort(reverse=False)
print(ids)  # [0, 1, 3, 4, 5, 6, 99]

5.3.5 复制

  • copy():复制

格式:

列表.copy()

案例:

ids = [1, 2, 3, 4, 5]
new_ids = ids.copy()
print(new_ids)  # [1, 2, 3, 4, 5]

5.4 列表遍历

去获取或者打印列表中的每一个数据

  • for 遍历

案例:

ids = [1, 2, 3, 4, 5]
for i in ids:print(i)
  • while 遍历
ids = [1, 2, 3, 4, 5]
i = 0  # i:下标
while i <= len(ids) - 1:print(ids[i])i += 1

5.5 列表嵌套(多维列表)

列表嵌套相当于其他语言中的多维数据

比如:定义一个年级,年级中有三个班级

案例:

# nj21 = [["张三", "李四", "王二"],["小明", "迪迦"],["彦祖", "冠希", "你"]]
nj21 = []
bj01 = ["张三", "李四", "王二"]
bj02 = ["小明", "迪迦"]
bj03 = ["彦祖", "冠希", "你"]
# 将 班级 放入 年级中
nj21.append(bj01)
nj21.append(bj02)
nj21.append(bj03)
# print(nj21)
# 有一天,有一个塞亚他要插班,要将座位放在迪迦的前面
flag = False  # 定义标志,表示插班成功
for bj in nj21:  # 遍历年级for bj_stu in bj:if bj_stu == "迪迦":dj_index = bj.index(bj_stu)print("迪迦的下标:", dj_index)bj.insert(dj_index, "塞亚")print("塞亚插班成功!正在退出循环")# 插班成功,将标志改成 Trueflag = Truebreak  # 停止的 内层循环,思考?当插入之后停止所有!print(bj)# 判断标志,是否插班成功,如果成功,就退出if flag == True:print("退出成功!")break
print("插入的年级信息:", nj21)

5.6 练习

好友信息管理(姓名,性别,联系)
功能:查看所有好友信息修改指定好友信息删除指定好友增加好友清空好友列表退出
user = "root"
pwd = "root"
friends = [["张三", "男", 135897],["李四", "男", 135897],["李四", "男"]
]  # 存储好友while True:in_user = input("请输入用户名:")in_pwd = input("请输入密码:")# 比较用户名和密码是否一致if user == in_user and pwd == in_pwd:while True:# 登录成功,显示功能面板print(10 * "=" + "欢迎使用好友管理系统" + 10 * "=")print("""1:查看所有好友信息2:增加好友3:删除指定好友4:修改指定好友信息5:清空好友列表0:退出系统""")# 让用户选择想要进行的功能x = input("请输入想要进行的操作:")if x == "1":# 查看所有好友信息# 判断好友列表是否存在信息if len(friends) == 0:print("你现在并没有好朋友!请选择其他操作!")else:# 存在好友print("姓名\t\t性别\t\t电话")for i in friends:for j in i:print(j, end="\t\t")print()elif x == "2":# 增加好友name = input("请输入姓名:")sex = input("请输入性别:")tel = input("请输入电话号码:")list = [name, sex, tel]# 判断 list 信息是否已经在 friends列表中存在if list not in friends:friends.append(list)print(f"{name} 信息增加成功!")else:print("好友已经存在,不需要重复增加!")elif x == "3":# 删除指定好友del_name = input("请输入需要删除的好友姓名:")del_flag = False  # 定义标志,表示删除好友成功for friend in friends:if del_name in friend:friends.remove(friend)  # friends.remove(["张三", "男", 135897])print(f"好友:{del_name} 信息删除成功!")del_flag = Truebreak# 判断 del_flag 是否为 True,为 Fasle 表示好友不存在,没有删除if del_flag == False:print(f"删除失败!好友:{del_name} 不存在!")elif x == "4":# 修改指定好友信息up_name = input("请输入需要修改信息的好友姓名:")up_flag = False  # 定义标志,表示好友不存在,提示信息for friend in friends:if up_name in friend:  # friend=["张三", "男", 135897]# 开始修改new_name = input("新的姓名:")new_sex = input("新的性别:")new_tel = input("新的电话:")# 先找到 friend 在 friends列表中的下标index = friends.index(friend)friends[index] = [new_name, new_sex, new_tel]print("信息修改成功!")# 修改成功之后,将up_flag 改为 True ,修改成功up_flag = Truebreak# 判断 up_flag ,用于判断修改是否成功if up_flag == False:print(f"修改失败!好友:{up_name} 不存在!")elif x == "5":# 清空好友列表while True:sure = input("您确定需要清空所有好友吗?(y/n)")if sure == "y":friends.clear()print("好友列表清空成功!")breakelif sure == "n":print("ok!不清空好友列表!")breakelse:print("您的输入有误!请重新输入!")elif x == "0":print("欢迎下次使用!彦祖")exit(0)else:print("您输入有误!")else:print("用户名或密码错误!请重新输入!")

相关内容

热门资讯

全面控货价格仍倒挂,泸州老窖无... 泸州老窖离“白酒老三”宝座越来越远,面临的挑战也越来越严峻了。5月29日,履职十年的董事钱旭离职的公...
识局安排安徽某政府对接工业机器... 文/识局招商团队(识局微信公共账号zhijuzk)6月6日,周五。识局安排安徽某政府对接工业机器人项...
V观财报|*ST天喻及实控人之...   中新经纬6月6日电 *ST天喻6日盘后公告,公司及实际控制人之一闫春雨于6月6日分别收到《中国证...
未来已来,怎么抓住先进科技新起... 所有的产业都值得用AI重新做一遍用。用这句话来总结新一轮的AI科技浪潮,可能并不过分,人工智能技术正...
嘉麟杰:控股股东一致行动人及实... 6月6日晚间,上海嘉麟杰纺织品股份有限公司(嘉麟杰,002486.SZ)公告,公司控股股东绍兴国骏企...
58同城姚劲波6.6亿“买药”... 初代互联网大佬寻找“第二曲线”!作者 | 赵普编辑丨高岩来源 | 野马财经姚劲波出手,易明医药(00...
隆基绿能:股东HHLR拟减持不... 6月6日晚间,隆基绿能科技股份有限公司(隆基绿能,601012.SH)公告,截至本公告披露日,HHL...
阿特斯:股东元禾重元拟减持不超... 6月6日晚间,阿特斯阳光电力集团股份有限公司(阿特斯,688472.SH)公告,公司于今日收到持股3...
公募REITs总市值突破200... 距首批REITs上市不到4年时间,全市场公募REITs总市值突破2000亿元。第一财经获悉,未来,数...
破解融资难题 稠州银行金融“活... 潮新闻客户端 通讯员 刘家慧 民营企业是经济发展的生力军,是浙江市场经济高度活跃的金名片。作为起源于...
深交所:本周共对14起上市公司... 6月3日至6月6日,深交所共对80起证券异常交易行为采取了自律监管措施,涉及盘中拉抬打压、虚假申报等...
德国ETF今年悄悄大涨3成,原... 今年QDII最火基金。 作者 | 市值风云基金研究部 编辑 | 小白 风云君发现,今年外国股市中,...
6月6日沪深两市强势个股与概念... 一、强势个股截至6月6日收盘,上证综指上涨0.04%,收于3385.36点,深证成指下跌0.19%,...
玩商标文字游戏“多半”“翻车” 维 辰 断句的艺术,被一些人给玩明白了。 前有“壹号土猪肉”“千禾0酱油”中的“壹号土”“千禾0”其...
突发!千亿级险企中邮保险原总经... 据财新报道,中邮人寿原总经理党均章失联了,消息称其已经被有关部门带走调查。 公开资料显示,党均章,...
白银价格创13年来新高,投资时... 文/张文晖6月5日,贵金属市场上演了一场令人瞩目的行情。现货白银价格大幅飙升,一度涨幅超过4.5%,...
5天翻倍股金陵体育:苏超联赛有... “苏超”概念股金陵体育公告称,苏超联赛有部分场地使用了公司的足球比赛器材。6月6日,江苏金陵体育器材...
如何选出业绩长期稳定的基金?(... 优秀的基金经理在业绩表现上往往有一个显著特点:短期业绩未必锋芒毕露,但随着时间维度拉长,业绩却愈发亮...
英国承认:统计数据存在重大错误... 有多少资讯是真正有用的?FinGraph是中文财经世界唯一一家每日图形化早晚专栏,为专注于全球市场的...
王自如AI创业,坦言“来钱快” 王自如投身 AI 创业领域,其言辞中毫不掩饰地提及“来钱快”。这一表述反映出当下 AI 创业的某种现...
又一培训机构,黄了? 培训机构... 5月24日晚上,知名医考教培机构“金英杰”创始人赵红峰,被自家员工堵在了办公室。当天,员工们发现自己...
上交所:将推动上市公司进一步加... 据上交所发布6月6日消息,为贯彻落实党中央、国务院关于资本市场的决策部署,落实中央政治局会议和新“国...
上交所召开高分红重回报暨上市公... 6月5日,上海证券交易所召开高分红重回报暨上市公司价值提升座谈会,就进一步提升高分红、高股息率上市公...
全球吃瓜!马斯克怒掀特朗普情色... 全世界最有钱的人,和美国最有权的人。骂出了全世界,最难听的话!今天一早,外网都炸了, 因为马斯克的爆...
《西游记》演员叶以萌去世!曾饰... 搜狐娱乐讯 近日,据博主《1982西游记》透露,演员叶以萌于6月4日凌晨2点38分因病医治无效离世,...
6月6日复盘:银行+新消费牛市... 昨天A股成交量是1.29万亿,因为有增量资金,我觉得市场继续上涨问题是不大的。但今天成交量只有1.5...
美财政部“书面指导”:日本央行... 美国财政部罕见"指导"日本央行加息,日本财务大臣加藤胜信回应称,将把货币政策细节留给日本央行来决定。...
苏股IPO | 刚刚,无锡这家... 今天(6月6日),上交所上市审核委员会2025年第18次会议审核通过江阴华新精密科技股份有限公司(以...
不正当竞争、强制骑手二选一 ?... 唉,我记得当初,京东给外卖骑手兄弟,写过一封信。其中一点是:对兼职骑手永不强迫“二选一”。但.......
港股收盘 | 三大指数周线延续... 财联社6月6日讯(编辑 胡家荣)本周港股三大指数延续近期涨势。截至周五收盘,恒生指数累计上涨2.16...