列表

用于存储大量元素时候使用列表

列表(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 容器类数据-列表相关推荐

  1. [JAVA EE] JPA技术基础:完成数据列表的删除

    接上一篇:[JAVA EE] JPA技术基础:完成数据列表显示 本章完成数据列表的删除 修改 UserController.java package com.example.demo.controll ...

  2. 【分享】(性能优化)思考数据列表中“特殊的列”

    数据列表在应用程序中十分常见和普遍,尤其是管理类的软件操作界面,如:一个待办列表,邮件列表,用户列表等.数据列表的数据源是由我们通过数据查询,逻辑运算,最终展示为列表. 我们来看一种需求场景,假设列表 ...

  3. 通用数据级别权限的框架设计与实现(3)-数据列表的权限过滤

    查看上篇文章通用数据级别权限的框架设计与实现(2)-数据权限的准备工作,我们开始数据列表的权限过滤. 原理:我们在做过滤列表时,根据用户权限自动注入到相关SQL中,实现相关过滤,如果拥有全部权限,则不 ...

  4. 数据列表DataList模板之实例

    1,数据列表DataList与重复列表Repeator很类似,但是DataList应用更广泛,因为他可以选择和修改数据项的内容. DataList的数据显示和布局与Repeator控件一样都是通过&q ...

  5. MySQL存储过程使用游标循环数据列表

    本篇文章主要讲解,我的一个案例,使用存储过程和游标循环数据列表,并且做一些操作,比如保存一些数据,修改一些数据: 1.需求? MySQL使用存储过程循环数据列表? 2.先描述下MySQL有哪些循环的语 ...

  6. [html] 如何优化大数据列表(10万+)的性能?说说你的方案

    [html] 如何优化大数据列表(10万+)的性能?说说你的方案 定时器批量绘制, 过滤,查询使用serviceWorker ? 个人简介 我是歌谣,欢迎和大家一起交流前后端知识.放弃很容易, 但坚持 ...

  7. php ajax 加载列表,Ajax点击不断加载数据列表(图文教程)

    这篇文章主要介绍了Ajax点击不断加载数据列表的相关资料,需要的朋友可以参考下 Ajax简介 AJAX即"Asynchronous Javascript And XML"(异步Ja ...

  8. html怎么设计自动出现提示的数据列表?怎么设计数据列表像百度一样怎么随用户输入而更新

    <!DOCTYPE html> <html><head><meta charset="utf-8" /><title>h ...

  9. 数据列表的分页实现————分页敏捷开发

    概要 分页功能是比较常见的基础功能,虽然比较简单,但是每次需要用到这个功能的时候还是需要现写一遍.为了实现更加宏观的业务复用,特将本人特别喜欢的简易分页逻辑在此记述,以备日后重用. 逻辑描述 一般的分 ...

最新文章

  1. 点空白也弹窗口。看我弹
  2. Robot Perception for Indoor Navigation《室内导航中的机器人感知》
  3. 从一个故障说说Java的三个BlockingQueue
  4. mips汇编计算开方_清华考研辅导班-2020清华大学912计算机专业基础综合考研经验真题参考书目...
  5. 设计模式C++实现(5)——原型模式
  6. 判断五个分数等级划分_压力表精度等级怎么算?压力表精度等级划分及检验项目...
  7. 关闭线程 C语言,如何用C语言实现多线程
  8. python正则匹配表达式(1)
  9. IOS开发中--点击imageView上的Button没有任何反应
  10. 手机自带计算机的功能,手机上的这3个小功能,比电脑方便好用,你知道吗?...
  11. 基于微信小程序做了个交友小程序
  12. 计算机应用基础员工工资表,利用VBA编写Excel中的工资条与工资查询窗口
  13. html 科赫雪花,CSS3 科赫雪花分形动画
  14. 《计算之魂》Task3:关于排序的讨论
  15. 【群晖NAS】真·免费内网穿透方案 及踩坑合集
  16. 电容基础知识 之 钽电解电容
  17. oracle10g精简版配置,oracle 10g 精简版安装步骤分享
  18. win10 的计算机配置要求,详细教你windows10的配置要求
  19. 咕咚:约Pao新工具
  20. 植物大战僵尸java圣诞版,植物大战僵尸2国际版圣诞节版

热门文章

  1. 3.5寸服务器硬盘v4,六碟巨兽 希捷Enterprise Capacity 3.5 HDD v4评测
  2. java制作《石头迷阵》游戏。
  3. vSphere高级功能(一)——VMotion及SVMotion的实现
  4. MATLAB显函数作图 参数方程作图 极坐标方程作图绘图实例 用 Matlab 绘制高颜值函数图像 放大看告别浓浓锯齿风
  5. javascript基础:元素增删改操作
  6. 独享云虚拟主机、共享云虚拟主机、云服务器 ECS 区别
  7. 对数函数定义域和值域_对数函数的定义域、值域、定点
  8. 【转】TOEFL写作27分完全攻略
  9. C语言单分支if语句形式,2 单分支if语句
  10. 关于群晖 transmission安装及汉化