引言

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

多维列表

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

    认识python中元类的准备工作. 1,首先需要明白一个概念就是python中一切皆为对象. input: class Trick(object): pass ') print type(1234) ...

  2. 更简洁的log4j日志输出

    参考博客:https://blog.csdn.net/guoquanyou/article/details/5689652 只输出到文本,不输出到控制台 log4j.rootLogger=debug, ...

  3. Java NIO DirectByteBuffer 的使用与研究

    一.结论 DirectByteBuffer 与 ByteBuffer 最大区别就在于缓冲区内存管理的方式.ByteBuffer使用的是堆内存,DirectByteBuffer 使用的是堆外内存,堆外内 ...

  4. 【TensorFlow 3】mnist数据集:与Keras对比

    在TF1.8之后Keras被当作为一个内置API:tf.keras. 并且之前的下载语句会报错. mnist = input_data.read_data_sets('MNIST_data',one_ ...

  5. cmd与monkey测试

    monkey测试的相关命令 monkey是模拟用户触摸操作,不支持条件判断.monkey命令格式:  启动安卓模拟器/真机 点击运行->输入cmd->进入命令行界面 查看设备连接情况,ad ...

  6. 关于python中的特殊方法

    研究了几个小时,大概对python中的特殊方法一知半解,现在写写自己的理解,以及记录一些找到的资源.待自己有比较深入理解的时候,再来更新 https://docs.python.org/3/refer ...

  7. 解决微信小程序开发者工具输入框焦点问题

    Windows10笔记本上运行微信小程序开发者工具,输入框(input,textarea)没有焦点,只能在真机调试,效率太低.后来发现是Window10对笔记本高分屏支持不好,要DPI缩放,导致兼容性 ...

  8. Docker 架构原理及简单使用

    提示:文中有些内容为大神的博客内容,就不统一标注那里引用,只是再最下面标注参考连接谢谢 一.简介 1.了解docker的前生LXC LXC为Linux Container的简写.可以提供轻量级的虚拟化 ...

  9. Oracle RAC 集群启动与停止

    Oracle RAC 启动时,需要使用 root 用户执行,为了方便,写了启动和停止的脚本, 将该脚本放到 /root/bin ,因为bin 目录本身就在环境变量里,所以使用时直接root用户运行脚本 ...

  10. 不得不会的10点Java基础知识

    1.实例变量和类变量 实例变量:指每个对象独立的,修改其中一个对象的实例变量,不会影响其他实例变量的值,变量值无 static 关键字修饰: 类变量:是指所有对象共享的,其中一个对象把该变量的值修改了 ...