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