引言

本章主要介绍列表在实际应用中的使用场景,多维列表(嵌套列表)
如果你需要在列表保存每个人员的一些基本信息,使用列表嵌套来保存这种信息是个不错的主意。

多维列表

列表可以根据实际情况嵌套使用,比如你想保存两个人的信息,可使用如下方式
[ ['人员1' , '年龄' , '工资'] , [人员2] , [年龄] ,[工资] ... ]
以上多维列表可以很方便的保存每个人的信息,每个索引号对应一个人

嵌套列表使用

将用户录入的字符串信息以特定格式分割成列表保存起来,嵌套到人员列表中

  1. 定义一个存放人员信息的列表
emp_lost = []
  1. 使用 split() 将字符串分割成列表存到人员列表中
emp_list = []  # 存放人员信息列表
info = input("请录入员工信息(逗号分隔):")  # 用户输入字符串
info_list = info.split(",")  # 将字符创分隔成列表
emp_list.append(info_list)  # 将列表追加到人员列表
print(emp_list)  # 打印人员列表

# 运行结果:
'''
请录入员工信息(逗号分隔):张三,22,6000
[['张三', '22', '6000']]
'''

现在已经可以使用嵌套列表了,但实际情况往往不止录入一组员工信息,可能是N组

录入多组人员信息

让用户可以录入多组人员信息

使用循环

emp_list = []
while True:  # while 条件为 True 时会一直执行(死循环)
    info = input("请录入员工信息(逗号分隔):")
    if info == "":  # 判断是否录入信息
        print("没有录入信息,程序退出")  # 给用户提示
        break  # 中断退出循环
    # 如果用户录入信息,继续执行以下代码
    info_list = info.split(",")  # 将用户录入的字符串按照逗号分割成列表
    emp_list.append(info_list)  # 把员工信息存入到列表中
print(emp_list)  # 打印人员列表

# 运行结果:
'''
请录入员工信息(逗号分隔):张三,22,5000
请录入员工信息(逗号分隔):李四,23,6000
请录入员工信息(逗号分隔):王五,24,7000
请录入员工信息(逗号分隔):
没有录入信息,程序退出
[['张三', '22', '5000'], ['李四', '23', '6000'], ['王五', '24', '7000']]
'''

以上示例已经可以让用户一直录入员工信息了,但是却不是完善的,因为用户可以随便录入几个信息都行,即使只录入一个名称也保存

判断录入格式

这里假设用户需要录入三个信息才是格式正确,“姓名、年龄、工资”
如果录入少了或超过了都是不正确的格式

emp_list = []
while True:
    info = input("请录入员工信息(逗号分隔):")
    if info == "":
        print("没有录入信息,程序退出")
        break
    info_list = info.split(",")
    if len(info_list) != 3:  # 判断录入信息是否为三个元素
        print("录入格式不正确,请重新录入!")  # 提示格式不正确
        continue  # 跳过以下代码,重新执行循环
    emp_list.append(info_list)
print(emp_list)  # 退出打印员工列表

# 运行结果:
'''
请录入员工信息(逗号分隔):张三,22,5000
请录入员工信息(逗号分隔):李四,23
录入格式不正确,请重新录入!
请录入员工信息(逗号分隔):李四,23,6000
请录入员工信息(逗号分隔):
没有录入信息,程序退出
[['张三', '22', '5000'], ['李四', '23', '6000']]
'''

以上示例控制了用户输入的格式

格式化输出

以上示例中已经可以成功录入信息并且有控制用户录入的地方了,但是输出的格式却不尽人意,下面就解决这个问题

emp_list = []
while True:
    info = input("请录入员工信息(逗号分隔):")
    if info == "":
        print("没有录入信息,程序退出")
        break
    info_list = info.split(",")
    if len(info_list) != 3:
        print("录入格式不正确,请重新录入!")
        continue
    emp_list.append(info_list)

for emp in emp_list:
    emp_info = "姓名:{n} \t 年龄:{a} \t 工资:{s}".format( n=emp[0] , a=emp[1] , s=emp[2])  # 将格式化的信息保存到 emp_info 变量中
    print(emp_info)  # 打印格式化后的人员信息

# 运行结果:
'''
请录入员工信息(逗号分隔):张三,22,5000
请录入员工信息(逗号分隔):李四,23,6000
请录入员工信息(逗号分隔):王五,24,7000
请录入员工信息(逗号分隔):
没有录入信息,程序退出
姓名:张三    年龄:22   工资:5000
姓名:李四    年龄:23   工资:6000
姓名:王五    年龄:24   工资:7000
'''

本次演示程序的完整代码

上面使用到的 format() 方法为格式化函数,官方文档:
https://docs.python.org/3/library/string.html#formatstrings

最新文章

  1. iOS之触摸及手势
  2. python中的thread
  3. Javascript 截取2位小数
  4. nav布局 在线演示 DIVCSS5
  5. ASP.NET MVC URL重写与优化(进阶篇)-继承RouteBase玩转URL
  6. yii2 如何用命名空间方式使用第三方类库
  7. C# winform 中MessageBox用法大全(附效果图) (转载+说明)
  8. 【原】简述使用spark集群模式运行程序
  9. Android开发之技术文章索引
  10. 终极锁实战:单JVM锁+分布式锁
  11. 洛谷 P1471 方差
  12. 基于ROS的运动识别
  13. vertica系列:数据的导入导出
  14. 简单的做一个图片上传预览(web前端)
  15. c++中的header-only library
  16. Spring Mvc 一个接口多个继承; (八)
  17. 代码走查25条疑问 C# 跳转新的标签页 C#线程处理 .Net 特性 attribute 学习 ----自定义特性 看懂 ,学会 .NET 事件的正确姿势-简单版
  18. 跳表(skiplist)Python实现
  19. php preg正则表达式
  20. hdu5575

热门文章

  1. c++语言常用转义序列符号
  2. 【SVN】SVN使用教程总结
  3. 推荐:经典SQL语句大全
  4. 重复造轮子系列——基于Ocelot实现类似支付宝接口模式的网关
  5. centOS7启动apache,报错Caused by: java.net.UnknownHostException: wshCentOS:
  6. ASP.NET Core MVC 之布局(Layout)
  7. session对象和cookie对象的区别
  8. handlerAdapter与方法调用(参数的解析)
  9. Linux零拷贝技术,看完这篇文章就懂了
  10. kubernetes对接第三方认证