引言

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

多维列表

列表可以根据实际情况嵌套使用,比如你想保存两个人的信息,可使用如下方式
[ ['人员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

Python基础 2-2 列表的实际应用场景的更多相关文章

  1. 『Python基础-8』列表

    『Python基础-8』列表 1. 列表的基本概念 列表让你能够在一个地方存储成组的信息,其中可以只包含几个 元素,也可以包含数百万个元素. 列表由一系列按特定顺序排列的元素组成.你可以创建包含字母表 ...

  2. .Net程序员之Python基础教程学习----列表和元组 [First Day]

    一. 通用序列操作: 其实对于列表,元组 都属于序列化数据,可以通过下表来访问的.下面就来看看序列的基本操作吧. 1.1 索引: 序列中的所有元素的下标是从0开始递增的. 如果索引的长度的是N,那么所 ...

  3. Python基础学习Day4 列表的使用方法、range 用法、in用法

    一.列表 1.1列表:python基础数据类型之一:其他语言也有列表的概念,js 数组,可索引 ,可切片,可加步长 1.2列表的索引,切片,切片+ 步长 结果: 注意:列表里元素的数据类型,就是它本身 ...

  4. python基础之02列表/元组/字典/set集合

    python中内置的数据类型有列表(list)元组(tuple)字典(directory). 1 list list是一种可变的有序的集合.来看一个list实例: #第一种方法: >>&g ...

  5. 2015/9/1 Python基础(6):列表

    列表和字符串类型很相似,是同样的序列式数据类型.但是字符串只能由字符组成,列表可以保留任意数目的Python对象的灵活的容器.Python的列表比C的数组要灵活,数组里面只能是一种类型,列表可以有多种 ...

  6. Python基础数据类型之列表和元组

    一.列表   list 列表是python中的基础数据类型之一,其他语言中也有类似于列表的数据类型,比如js中叫数组,他是以[]括起来,每个元素以逗号隔开,而且他里面可以存放各种数据类型比如: li ...

  7. python基础数据类型--list列表

    列表: 列表是python中的基础数据类型之一,其他语言中也有类似于列表的数据类型,比如js中叫数组,他是以[]括起来,每个元素以逗号隔开,而且他里面可以存放各种数据类型比如: li = [‘alex ...

  8. Python基础-元组、列表、字典

    元组tuple 元组被称为只读列表,即数据可以被查询,但不能被修改,所以,字符串的切片操作同样适用于元组.例:(1,2,3)("a","b","c&q ...

  9. python 基础篇 04(列表 元组 常规操作)

    本节主要内容:1. 列表2. 列表的增删改查3. 列表的嵌套4. 元组和元组嵌套5. range 一. 列表1.1 列表的介绍列表是python的基础数据类型之一 ,其他编程语言也有类似的数据类型. ...

  10. python基础学习笔记——列表及元组

    列表 列表的介绍  列表是python的基础数据类型之一 ,其他编程语言也有类似的数据类型. 列表的索引和切片 列表和字符串一样也拥有索引: lst = ['刘德华','周润发','周杰伦','向华强 ...

随机推荐

  1. 100天搞定机器学习|Day8 逻辑回归的数学原理

    机器学习100天|Day1数据预处理 100天搞定机器学习|Day2简单线性回归分析 100天搞定机器学习|Day3多元线性回归 100天搞定机器学习|Day4-6 逻辑回归 100天搞定机器学习|D ...

  2. [NSNull intValue]: unrecognized selector sent to instance 0x375c9860

    今天遇到这个问题,程序崩溃了……日志如下: -[NSNull intValue]: unrecognized selector sent to instance 0x375c9860*** Termi ...

  3. codeforces 355A Vasya and Digital Root

    题意就是找出一个长度为k的整数,使得它的root为d,k的可能取值为1-1000. 第一眼看到这个题,无从下手,想到那么长的数,暴力肯定超时.其实不然,题目要求只要输出任何一个满足条件的即可,因为任何 ...

  4. linux字符设备驱动中内核如何调用驱动入口函数 一点记录

    /* 内核如何调用驱动入口函数 ? *//* 答: 使用module_init()函数,module_init()函数定义一个结构体,这个结构体里面有一个函数指针,指向first_drv_init() ...

  5. 在线图片base64编码

    图片Base64编码https://oktools.net/image2base64 在线工具https://oktools.net JSON格式化https://oktools.net/json U ...

  6. Kafka学习(四)-------- Kafka核心之Producer

    通过https://www.cnblogs.com/tree1123/p/11243668.html 已经对consumer有了一定的了解.producer比consumer要简单一些. 一.旧版本p ...

  7. SonarQube+Jenkins安装工程中遇到的吭

    1. SonarQube是不是有点飘了,居然要java11+才能运行 解决方案: 重新下载老版本 也不知道哪个版本才好用,就下载了7.0 和6.6,这两个版本用jdk1.8就可以用 2. 配置数据库u ...

  8. 自己动手写Spring框架--IOC、MVC

    对于一名Java开发人员,我相信没有人不知道 Spring 框架,而且也能够轻松就说出 Spring 的特性-- IOC.MVC.AOP.ORM(batis). 下面我想简单介绍一下我写的轻量级的 S ...

  9. 佳木斯集训Day8

    本来能AK的啊啊啊啊啊,唯一一天可以AK,却被Champion误导了(好吧实际上是我理解有问题) T1我写了俩小时,就是一道数列题,推公式的,可以二分解,我觉得二分麻烦,就直接想O(1)了 #incl ...

  10. openjdk:8u22-jre-alpine在java开发中的NullPointerException错误解决方案

    问题描述 ** 在SpringBoot项目中使用了Ureport报表组件, 打包发布部署到docker中启动报错 ** java.lang.NullPointerException at sun.aw ...