Python从入门到高手7.1节-Python列表类型详解

目录

[7.1.1 理解列表类型](#7.1.1 理解列表类型)

[7.1.2 列表的类型名](#7.1.2 列表的类型名)

[7.1.3 列表的定义](#7.1.3 列表的定义)

[7.1.4 列表是可迭代的](#7.1.4 列表是可迭代的)

[7.1.5 列表的解包操作](#7.1.5 列表的解包操作)

[7.1.6 好好学Python, 天天向上](#7.1.6 好好学Python, 天天向上)


7.1.1 理解列表类型

我们在日常生活中,都会接触到"列表"这种数据类型,譬如一本书籍的目录,在餐厅结账时的账单明细, 对日程的计划安排等。列表类型是一种数据集合,将集合中的元素按先后顺序进行排列。Python中的列表类型是用[]符号括住的一个数据集合,集合中的元素以英文逗号进行分隔。在列表类型中可以包含任意的数据类型:

python 复制代码
"""
@author: 大神薯条老师
@desc: 列表的定义
"""

# 定义一个列表变量container
container = [1, '2', 3.0, True]
# 在列表变量container中,同时包含整型 ,字符串类型,浮点类型,布尔类型

列表的数据结构同字符串一样,都是一种线性的顺序表结构:

从图可以看出,列表类型对应的也是一块连续的内存。

对线性的顺序表结构不是很熟悉的同学

在线性的顺序表结构中,可以通过索引的方式来随机访问数据集合中的元素:

python 复制代码
"""
@author: 大神薯条老师
@desc: 列表是一种线性的顺序表结构
"""

# 1.字符串是一种线性的序列结构
love = 'I Love You'
# 读取字符串中的一个字符
char = love[0]
 
# 2.列表也是一种线性的顺序表结构
container = [1, '2', 3.0, True]
# 读取列表中的一个元素
element = container[0]

Python中的索引从0开始编号,0表示第一个位置,1表示第二个位置。Python也支持负数索引,负数索引从-1开始编号,-1表示倒数第一个位置,-2表示倒数第二个位置,以此类推。

7.1.2 列表的类型名

在交互模式中通过type来输出字符串的类型名:

>>> container = [1, '2', 3.0, True]

>>> type(container)

<class 'list'>

从输出可知,列表的类型名为list。

7.1.3 列表的定义

对列表进行定义,主要有对象定义法和直接定义法。

(1) 对象定义法

列表的类型名是list,可以直接在交互模式中执行help(list)来查找list的定义及用法:

>>> help(list)

Help on class list in module builtins:

class list(object)

| list(iterable=(), /)

|

| Built-in mutable sequence.

|

| If no argument is given, the constructor creates a new empty list.

| The argument must be an iterable if specified.

在交互模式的输出中,list(iterable=(),/)的形式就是对象定义法。参数iterable表示可迭代对象。迄今学过的数据类型中,字符串以及列表都是一种可迭代的类型。所谓迭代,就是按顺序逐一地访问容器中的元素。

代码实例:

python 复制代码
"""
@author: 大神薯条老师
@desc: 列表的对象定义法
"""
 
# 1.定义空列表
# 不传递任何参数时,定义的是空列表
array = list()
 
# 2.传递字符串类型定义列表,字符串是可迭代的
letters = list("abcdefg")
"""
letters的输出为['a','b','c','d','e','f','g']
从输出可以看出,是逐一地将字符串中的字符添加进列表中
"""
 
# 3.传递列表类型定义列表,列表也是可迭代的
container = list([1, '2', 3.0, True])
# container的输出为[1, '2', 3.0,True]

(2) 直接定义法

所谓直接定义法,是直接通过列表的符号[]来定义列表:

python 复制代码
"""
@author: 大神薯条老师
@desc: 列表的直接定义法
"""

# 列表的直接定义法,通过[]来构造列表

container = [1, '2', 3.0, True]

列表可以包含任意的数据类型,现在通过直接定义法来定义嵌套的列表。所谓嵌套列表,是指在列表中包含列表。

代码实例:

python 复制代码
"""
@author: 大神薯条老师
@desc: 定义嵌套列表
"""

# 嵌套列表就是列表中包含列表
scores = [[88, 91, 83], [82, 90, 76]]

在以上代码实例中,定义了一个二维的列表。同学们可以将嵌套的列表理解为一种N维的数据结构。我们平常见到的图片,表格等就是一种二维数据结构。

7.1.4 列表是可迭代的

Python中的简单数据类型,都是不可迭代的类型。迄今学过的简单数据类型有整型,浮点类型,布尔类型,空类型。Python中的字符串,列表都是可迭代的。只要是可迭代,就能够用于for循环中,在循环中迭代容器的元素:

python 复制代码
"""
@author: 大神薯条老师
@desc: 列表是可迭代的
"""

# 构造一个嵌套列表,每一个子列表表示学生的语数外成绩
scores = [[78, 91, 83], [80, 92, 91], [83, 81, 68]]


# 计算学生的总分最高分
max_score = 0

for student_scores in scores:
    total = 0
    for score in student_scores:
        total += score
    if total > max_score:
        max_score = total

print(f"学生的总分最高分:{max_score}")
    

7.1.5 列表的解包操作

解包是指将容器中的元素取出来,再按序赋值给赋值操作符左边的变量:

代码实例:

python 复制代码
"""
@author: 大神薯条老师
@desc: 列表的解包
"""

container = [1, 2, 3]

# 将元素解包赋值给变量a, b, c
a, b, c = container

# 解包时,变量的个数必须与容器中的元素数量一致,否则报错
a, b = container # 变量少了,程序抛出异常
a, b, c, d = container # 变量多了,程序抛出异常

7.1.6 好好学Python, 天天向上

跟薯条老师学后端开发,高级爬虫(JS逆向+安卓逆向),数据分析,大数据开发,量化交易,以及机器学习+深度学习算法。坚定自己的学习目标,保持学习的热情,那你成为高手只是时间问题。

薯条老师的学生在南方电网,林氏家居,京东,阿里等大厂。想系统学习Python和Java的同学,可以移步薯条老师的个人技术博客:薯条老师的个人技术博客http://www.chipscoco.com/ 对本节教程有任何不懂的同学,亦可在评论区中进行评论。薯条老师会详细解答你们提出的每一个问题。

相关推荐
机器人虎哥2 分钟前
【8210A-TX2】Ubuntu18.04 + ROS_ Melodic + TM-16多线激光 雷达评测
人工智能·机器学习
何大春13 分钟前
【弱监督语义分割】Self-supervised Image-specific Prototype Exploration for WSSS 论文阅读
论文阅读·人工智能·python·深度学习·论文笔记·原型模式
在下不上天22 分钟前
Flume日志采集系统的部署,实现flume负载均衡,flume故障恢复
大数据·开发语言·python
SEVEN-YEARS25 分钟前
深入理解TensorFlow中的形状处理函数
人工智能·python·tensorflow
EterNity_TiMe_30 分钟前
【论文复现】(CLIP)文本也能和图像配对
python·学习·算法·性能优化·数据分析·clip
Suyuoa41 分钟前
附录2-pytorch yolov5目标检测
python·深度学习·yolo
Iced_Sheep1 小时前
干掉 if else 之策略模式
后端·设计模式
XINGTECODE1 小时前
海盗王集成网关和商城服务端功能golang版
开发语言·后端·golang
程序猿进阶1 小时前
堆外内存泄露排查经历
java·jvm·后端·面试·性能优化·oom·内存泄露
FIN技术铺1 小时前
Spring Boot框架Starter组件整理
java·spring boot·后端