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/ 对本节教程有任何不懂的同学,亦可在评论区中进行评论。薯条老师会详细解答你们提出的每一个问题。

相关推荐
巴里巴气1 分钟前
安装GPU版本的Pytorch
人工智能·pytorch·python
wt_cs22 分钟前
银行回单ocr api集成解析-图像文字识别-文字识别技术
开发语言·python
_WndProc44 分钟前
【Python】Flask网页
开发语言·python·flask
互联网搬砖老肖1 小时前
Python 中如何使用 Conda 管理版本和创建 Django 项目
python·django·conda
深栈解码1 小时前
JMM深度解析(三) volatile实现机制详解
java·后端
张家宝68371 小时前
ambari
后端
测试者家园1 小时前
基于DeepSeek和crewAI构建测试用例脚本生成器
人工智能·python·测试用例·智能体·智能化测试·crewai
StephenCurryFans1 小时前
Spring AI vs LangChain4j:Java AI开发框架完整对比指南 🚀
后端·spring
程序员辉哥1 小时前
学会在Cursor中使用Rules生成代码后可以躺平了吗?
前端·后端
大模型真好玩1 小时前
准确率飙升!Graph RAG如何利用知识图谱提升RAG答案质量(四)——微软GraphRAG代码实战
人工智能·python·mcp