1.7.1 容器类数据-列表
列表
用于存储大量元素时候使用列表
列表(list()):
相当于一个有序的集合. 顺序(从0开始排序)
就是一个容器, 相当于一个箱子(各种物品), 列表中放数据(整数, 小数, 字符串, 布尔值, None, 列表, 元组, 字典等等). 其中每个数据用 , 隔开.
列表特点:
1.有序, 有索引: 第一个位置索引是0, 列表顺序(索引) 从0开始, 向后依次递增,每次加一, 0, 1, 2, 3… 作用是标记列表数据的位置.python会默认从0开始给每一个元素(数据)一个索引,
我们对列表进行增删改查, 就是可以通过索引进行, 记住<索引是唯一的,不重复> 千万记住列表索引从0开始.
2.列表中元素可以重复出现. 但是不同位置的元素索引不一样.索引具有唯一性.
3.列表中元素的索引都是有正, 负两个索引, 但是0只有一个.
创建空列表
list1 = list() # 使用list()函数创建 list2 = [] # 推荐使用, 简单快捷
创建带元素的列表
list1 = ['盾山', '张飞', '鬼谷子', '蔡文姬'] list2 = ['武则天', 9988, 10086.11, True, False]
多维列表
# 列表中放列表, 叫多维列表 # 二维列表 two_list = [[1, 2, 3], [1, 2, 3], [1, 2, 3]] print(two_list) # 三维列表 three_list = [[[1, 2], [1, 2]], [[1, 2], [1, 2]]] print(three_list)
打印单个元素
list1 = ['裴擒虎', '瑶', '云中君'] print(list1[0]) # 打印第一个元素, 列表索引从0开始排 print(list1[1]) # 打印第二个元素
查询元素是否存在
list1 = ['李宁', '耐克', '阿达迪斯'] res = '李宁' in list1 print(res)
循环打印列表
list1 = ['李宁', '耐克', '阿达迪斯'] for l in list1:print(l)
遍历列表获取列表索引及元素
list1 = ['李宁', '耐克', '阿达迪斯'] for i, l in emumerate(list1):print(i, l)
列表元素修改
# 索引(下标), 列表默认给元素进行一个排序, 从0开始,依次增大 list1 = ["嘉靖", "李隆基", "刘彘", "朱棣"] print(list1[2]) list1[2] = "汉武帝" print(list1) list1[1] = "唐明皇" print(list1)
列表常用函数
- 添加函数: append()/insert()
# 1.append()函数: list2.append(数据) 括号中写要添加到列表的数据,将对象追加到列表的末尾。(Append object to the end of the list.)默认添加到列表的尾部. list2.append("15136282191") print(list2) list2.append(100000000) print(list2)# 2.insert()函数, 插入数据, 括号中第一个参数填位置, 第二个参数填要插入的数据. # 0 1 2 3 4 list3 = ["李白", "韩信", "曹操", "刘备", "赵云"] # 0 1(孙悟空) 2(韩信) 3(曹操) ..... print(list3) list3.insert(1, "孙悟空") print(list3) list3.insert(2, "俺老孙也是风一般的男子!") print(list3) print("---------------------------------")
- 查询函数: count()/index()
list2 = ["鲁班七号", "后羿", "公孙离", "马可波罗", "黄忠", "后羿", "公孙离", "马可波罗", "后羿", "公孙离", "马可波罗", "后羿", "公孙离", "马可波罗", "后羿", "公孙离"] # 1.count(元素): 计算列表中一个元素出现了多少次, 括号中填写要统计的元素本身. 有返回值, 需要一个变量去接收. count = list2.count("后羿") print(count) count = list2.count("马可波罗") print(count) # 2.index(元素): 返回元素的索引, 括号里面填元素, 如果列表中有多个相同的元素,则默认返回第一个元素的索引. list3 = ["马可波罗", "黄忠", "后羿", "公孙离"] index = list3.index("黄忠") print(index) index = list3.index("后羿") print(index) index = list3.index("韩信") # ValueError(值错误): '韩信' is not in list
- reverse()/sort()
# 3.reverse(): 翻转列表, 反转. 直接修改了原来的列表. print(list3) list3.reverse() print(list3) # 4.sort(): ASCII码 A 65(十进制), Z 90, a 97, z 122, utf-8. 对列表中的元素按照ascii码排序, 默认是升序排序. 括号中可以设置reverse=True, 从大到小排列. list4 = [2, 3, 5, 1, 8, 23, 12] print(list4) list4.sort() print(list4) list5 = ["a", "b", "D", "G", "l", "e", "中国"] list5.sort(reverse=True) print(list5)
- 列表删除元素: remove()/pop()/ del
# 1.remove()函数, 将列表中某个元素删除, 括号中填入要删除的元素. 在列表中存在多个相同元素时, 使用remove(数据名) 默认删除第一个. list3.remove("李白") print(list3) # 添加一个孙悟空, ['孙悟空', '俺老孙也是风一般的男子!', '韩信', '曹操', '刘备', '赵云', '孙悟空'] , 列表中有两个孙悟空. list3.append("孙悟空") print(list3) # 下边删除 "孙悟空" list3.remove("孙悟空") print(list3)# 2.pop()函数, 针对list中所有的元素, 默认删除最后一个数据. 括号内参数填数据索引, 针对指定索引的数据进行删除. list3.pop() print(list3) # 删除指定索引的数据. list3.pop(1) print(list3)# 3.del 关键字(if elif else, for, while, and, or, break, None.... ) # del list3[指定索引] :删除指定元素, del list3[0] print(list3)
- 列表合并: extend()
# 5.extend(): 合并列表, 将一个列表合并另一个列表中, 列表中所有元素插入到另一个列表后边. list3.extend(list4) print(list3) # list + list 起到两个列表拼接的作用, 将后者列表拼接到前者列表 print("你好" + "梦奇!") list6 = list4 + list3 print(list6) # list*数字 让列表中元素翻倍 print("你好" * 10) list7 = [1, 2, 3] print(list7 * 3)
- 列表查询
# 根据列表中的索引进行数据查询 list4 = ["刘墉", "纳兰性德", "赵匡胤", "晏殊", "李清照", "张良", "海瑞"] print(list4[3]) print(list4[5]) # 切片查询, list名[开始下标:结束下标] range(开始值, 结束值)取头部取尾 print(list4[2:3]) print(list4[5:6]) print(list4[2:5]) # 取索引为 2, 3, 4 的元素 # 查询出所有元素, [开始值:结束值] 默认开始值是0, 结束值是最后一个位置 """len() 函数, 返回列表, 字符串的长度. """ # print(len("ssdjhgocvbtjhihreiohgoingi31onfdiog548498165156")) end = len(list4) print(end) print(list4[:end]) # 返回列表的所有元素 print(list4[2:]) # 将列表截取了一段 print(list4[:5]) print(list4[:]) # 默认截取整个列表# [开始值(默认0):结束值(默认最大):步数(没几个取一个,默认为1)] print(list4[:5:2])# 倒序查询, 从最后一个开始查为 -1 接着 -2, -3, -4 ... (0没有正负之分, 所以倒着数不从0开始.) print(list4[-1]) # 查询倒数第一个 跟list4[8]相同 print(list4[-3]) # 查询倒数第三个 print(list4[-7])print("------------------------------") # 循环查询 list5 = ["袁崇焕", "张居正", "霍光", "萧何"] for l in list5:print(l) # 可以用占位符拼接字符串 print("列表输出: %s" % list5) print("{} list".format(list5))for l in range(0, len(list5)):print(f"列表的索引: {l}, 对应的值: {list5[l]}")# 枚举函数查询, index(索引), value(值) enumerate(枚举) 括号中放入list for index, value in enumerate(list5):print(f"{index}-{value}")for i in range(100):print(i)
- 列表常用函数
# extend(): 合并列表, 将一个列表合并另一个列表中, 列表中所有元素插入到另一个列表后边. list3.extend(list4) print(list3) # list + list 起到两个列表拼接的作用, 将后者列表拼接到前者列表 print("你好" + "梦奇!") list6 = list4 + list3 print(list6) # list*数字 让列表中元素翻倍 print("你好" * 10) list7 = [1, 2, 3] print(list7 * 3) # copy(): list8 = list3 赋值, 数值上相等, list8 = list3.copy() 在内存上相同. list8 = list3.copy() print(list8) # clear(): 清空列表. list8.clear() print(list8)
列表推导式
# 基本方法 l1 = [x for x in range(10)] # 带判断的列表推导式 l2 = [x for x in range(10) if x % 2 == 0] # 双循环 l3 = [(x, y) for x in range(10) for y in range(5)] # 三个for循环 l4 = [(x, y, z) for x in range(10) for y in range(10) for z in range(10)] print(l4)
列表案例
- 列表去重
name_list = ["诸葛亮", "司马懿", "王昭君", "钟馗", "司马懿", "王昭君"] new_name_list = [] # 遍历列表, 就是循环列表, 列表中每一个元素都拿出来 for name in name_list:# 判断元素是否在新列表中, 如果在新的列表中, 则跳过, 如果不在则添加if name in new_name_list:continueelse:new_name_list.append(name) print(new_name_list)
- 判断闰年并写入列表中
"""1.判断闰年,将0-2020之间的闰年写入列表中1.能整除4不能被100整除2.能被400整除 """ # 写while, 第一步先设一个变量,给一个初始值(根据实际情况而定) # 见名知意, 创建一个变量根据变量的含义命名. year = 1 # while 判断条件, 当条件成立则执行while的子语句, 如果不成立结束循环. # 创建一个放闰年的列表 leap_year_list = [] # 建议用下划线连接单词 # leapYearList = [] 驼峰命名法 # 创建一个放 不是闰年的列表 not_leap_year_list = [] while year <= 2020:# % 取余数, != 不等于if year % 4 == 0 and year % 100 != 0:# %s 通用占位符, 拼接字符串.print("%s 是闰年" % year)leap_year_list.append(year) # 列表后打点 . 调用 append() 将变量添加到列表中.elif year % 400 == 0:# format() 函数, 拼接字符串.print("{} 是闰年".format(year))print(f"{year} 是闰年")leap_year_list.append(year)else:print("{y} 不是闰年".format(y=year))not_leap_year_list.append(year)year += 1print("闰年列表: ", leap_year_list) print("不是闰年列表: ", not_leap_year_list)
使用列表实现登陆注册系统
登陆注册系统.
1.登陆
键盘输入: 账号,密码 都是字符串.
username_list = [] 账号的列表
password_list = [] 密码的列表
注意: 账号和密码在列表中存放的索引要一一对应
1.从键盘上输入一个账号, 判断列表中有没有这个账号.
2.如果有说明账号存在, 下一步去验证密码
3.通过账号的索引跟密码在列表中的索引一致. 通过索引找密码
4.验证密码通过则登陆成功.
2.注册
1.输入账号, 验证是否存在, 存在则重新输入, 不存在则注册
2.输入密码保存在密码列表中
3.修改密码
1.先登录, 然后获取账号的索引
2.根据账号的索引获取到密码进行修改
4.删除账号
1.先输入账号, 然后获取账号的索引, 删除账号
2.根据账号的索引获取到密码进行删除
# 账号: 6-20位, 字母, 数字, 键盘符号, 账号不能重复. username_list = ["root", "user"] # 密码6-20位 password_list = ["123456", "123321"] while True:print(""" ----------------------------------------| 欢迎登陆汇盛教育官网 | ----------------------------------------1.登陆账号2.注册账号3.修改密码4.删除账号""")# input(): 输入 print(): 输出, 打印select_num = input("请输入您的选择: ")# 判断输入的选项是登陆还是注册.if select_num == "1":print("正在进入登陆界面...")print(""" ----------------------------------------| 欢迎来到登陆界面 | ----------------------------------------""")username = input("请输入您的账号(账号长度6-20): ")un_len = len(username) # len() 获取变量username(字符串类型)的长度# 判断账号的长度, 是否符合规范while un_len < 6 or un_len > 20:print("您输入的账号长度不对!请重新输入")username = input("请输入您的账号(账号长度6-20): ")un_len = len(username)# 去列表验证, 判断是否在列表中(in, 成员运算符)if username in username_list:print("账号输入正确")# 调用列表的 index() 函数来获取username的索引.un_index = username_list.index(username)password = input("请输入您的密码(密码长度6-20): ")# 拿到索引, 利用账号索引,去密码列表中获取密码# 列表名[索引] : 通过索引拿到元素psword = password_list[un_index]if password == psword:print("密码输入正确")print("登陆成功!")breakelse:print("密码输入错误")else:print("账号没有注册")elif select_num == "2":print("正在进入注册界面...")print("""----------------------------------------| 欢迎来到注册界面 |----------------------------------------""")print("请输入您要注册的账号")new_username = input("请输入(6-20位, 字母,数字,符号)账号: ")if new_username in username_list:print("账号已存在请重新输入")new_username = input("请输入(6-20位, 字母,数字,符号)账号: ")else:print("账号可用,恭喜!")username_list.append(new_username)print("账号已经添加")new_password = input("请输入您的密码(6-20): ")second_input = input("请确认您的密码(与上边密码保持一致): ")if second_input == new_password:print("密码正确, 正在保存...")password_list.append(new_password)print("恭喜你! 账号注册成功")else:print("您前后输入的密码不一致, 请重新输入.")new_password = input("请输入您的密码(6-20): ")second_input = input("请确认您的密码(与上边密码保持一致): ")elif select_num == "3":print("正在进入修改密码界面...")print("""----------------------------------------| 欢迎来到修改密码界面 |----------------------------------------""")username = input("请输入您的账号(账号长度6-20): ")un_len = len(username)while un_len < 6 or un_len > 20:print("您输入的账号长度不对!请重新输入")username = input("请输入您的账号(账号长度6-20): ")un_len = len(username)if username in username_list:print("账号输入正确")# 这个地方我们已经拿到了账号密码的索引.un_index = username_list.index(username)password = input("请输入您的密码(密码长度6-20): ")psword = password_list[un_index]if password == psword:print("密码输入正确")print("登陆成功!")print(">>>>>>>>>>>开始修改密码>>>>>>>>>")old_password = input("请输入原密码: ")while old_password != psword:old_password = input("请重新输入原密码: ")new_password = input("请输入新的密码(密码长度6-20): ")second_input = input("请确认新的密码(密码长度6-20): ")while second_input != new_password:print("前后密码输入不一致, 请重新输入!")# time.sleep(5) # 这个地方就是停顿5秒钟再往下执行.new_password = input("请输入新的密码(密码长度6-20): ")second_input = input("请确认新的密码(密码长度6-20): ")print("正在保存新密码!")# 1.直接修改# password_list[un_index] = new_password# 2.先删除旧密码, 然后保存新密码, 保存到指定索引位置password_list.pop(un_index)# insert(): 在列表指定的位置插入数据.password_list.insert(un_index, new_password)print("密码已经修改, 请重新登录")else:print("密码输入错误")elif select_num == "4":print("正在进入注销界面...")print("""----------------------------------------| 欢迎来到登陆界面 |----------------------------------------""")username = input("请输入您要删除的账号: ")un_index = username_list.index(username)# 1.del: 关键字 删除del username_list[un_index]# 2.pop(): pop() 是一个函数, 函数后边有括号, 括号中要放入参数username_list.pop(un_index)# 3.remove(): 函数, 移除某个元素username_list.remove(username)# 删除密码必须使用索引删除, 因为密码会重复, 只有删除指定索引才能删除对应账号的密码password_list.pop(un_index)print("账号密码已经被删除!")else:print("没有这个选项")
1.7.1 容器类数据-列表相关推荐
- [JAVA EE] JPA技术基础:完成数据列表的删除
接上一篇:[JAVA EE] JPA技术基础:完成数据列表显示 本章完成数据列表的删除 修改 UserController.java package com.example.demo.controll ...
- 【分享】(性能优化)思考数据列表中“特殊的列”
数据列表在应用程序中十分常见和普遍,尤其是管理类的软件操作界面,如:一个待办列表,邮件列表,用户列表等.数据列表的数据源是由我们通过数据查询,逻辑运算,最终展示为列表. 我们来看一种需求场景,假设列表 ...
- 通用数据级别权限的框架设计与实现(3)-数据列表的权限过滤
查看上篇文章通用数据级别权限的框架设计与实现(2)-数据权限的准备工作,我们开始数据列表的权限过滤. 原理:我们在做过滤列表时,根据用户权限自动注入到相关SQL中,实现相关过滤,如果拥有全部权限,则不 ...
- 数据列表DataList模板之实例
1,数据列表DataList与重复列表Repeator很类似,但是DataList应用更广泛,因为他可以选择和修改数据项的内容. DataList的数据显示和布局与Repeator控件一样都是通过&q ...
- MySQL存储过程使用游标循环数据列表
本篇文章主要讲解,我的一个案例,使用存储过程和游标循环数据列表,并且做一些操作,比如保存一些数据,修改一些数据: 1.需求? MySQL使用存储过程循环数据列表? 2.先描述下MySQL有哪些循环的语 ...
- [html] 如何优化大数据列表(10万+)的性能?说说你的方案
[html] 如何优化大数据列表(10万+)的性能?说说你的方案 定时器批量绘制, 过滤,查询使用serviceWorker ? 个人简介 我是歌谣,欢迎和大家一起交流前后端知识.放弃很容易, 但坚持 ...
- php ajax 加载列表,Ajax点击不断加载数据列表(图文教程)
这篇文章主要介绍了Ajax点击不断加载数据列表的相关资料,需要的朋友可以参考下 Ajax简介 AJAX即"Asynchronous Javascript And XML"(异步Ja ...
- html怎么设计自动出现提示的数据列表?怎么设计数据列表像百度一样怎么随用户输入而更新
<!DOCTYPE html> <html><head><meta charset="utf-8" /><title>h ...
- 数据列表的分页实现————分页敏捷开发
概要 分页功能是比较常见的基础功能,虽然比较简单,但是每次需要用到这个功能的时候还是需要现写一遍.为了实现更加宏观的业务复用,特将本人特别喜欢的简易分页逻辑在此记述,以备日后重用. 逻辑描述 一般的分 ...
最新文章
- 点空白也弹窗口。看我弹
- Robot Perception for Indoor Navigation《室内导航中的机器人感知》
- 从一个故障说说Java的三个BlockingQueue
- mips汇编计算开方_清华考研辅导班-2020清华大学912计算机专业基础综合考研经验真题参考书目...
- 设计模式C++实现(5)——原型模式
- 判断五个分数等级划分_压力表精度等级怎么算?压力表精度等级划分及检验项目...
- 关闭线程 C语言,如何用C语言实现多线程
- python正则匹配表达式(1)
- IOS开发中--点击imageView上的Button没有任何反应
- 手机自带计算机的功能,手机上的这3个小功能,比电脑方便好用,你知道吗?...
- 基于微信小程序做了个交友小程序
- 计算机应用基础员工工资表,利用VBA编写Excel中的工资条与工资查询窗口
- html 科赫雪花,CSS3 科赫雪花分形动画
- 《计算之魂》Task3:关于排序的讨论
- 【群晖NAS】真·免费内网穿透方案 及踩坑合集
- 电容基础知识 之 钽电解电容
- oracle10g精简版配置,oracle 10g 精简版安装步骤分享
- win10 的计算机配置要求,详细教你windows10的配置要求
- 咕咚:约Pao新工具
- 植物大战僵尸java圣诞版,植物大战僵尸2国际版圣诞节版
热门文章
- 3.5寸服务器硬盘v4,六碟巨兽 希捷Enterprise Capacity 3.5 HDD v4评测
- java制作《石头迷阵》游戏。
- vSphere高级功能(一)——VMotion及SVMotion的实现
- MATLAB显函数作图 参数方程作图 极坐标方程作图绘图实例 用 Matlab 绘制高颜值函数图像 放大看告别浓浓锯齿风
- javascript基础:元素增删改操作
- 独享云虚拟主机、共享云虚拟主机、云服务器 ECS 区别
- 对数函数定义域和值域_对数函数的定义域、值域、定点
- 【转】TOEFL写作27分完全攻略
- C语言单分支if语句形式,2 单分支if语句
- 关于群晖 transmission安装及汉化