猪行天下之Python基础——3.2 列表 & 元组

简介: 内容简述:1、列表(List)2、元组(Tuple)

1、列表(List)


列表、元组和字符串因为成员有序,可以通过下标访问,又称为「序列」。列表有序内容长度可变,使用中括号[]表示元素间用逗号分隔,元素的数据类型可以不一样!列表的相关的操作有:「元素访问,切片,修改,追加,插入,删除,扩展,统计,排序,下标获取,拷贝


① 列表创建


直接把元素放在中括号[]中,用逗号进行分隔,比如:


data_list = [1,2,0,"a",True]


② 访问列表元素


列表是有序的,可以通过「下标索引」来访问列表中的元素,可以从左开始索引,也可以从右开始索引。从左开始索引的下标范围:[0, 列表长度-1]从右开始索引的下标范围:[-1, 列表长度],如果索引下标不在范围里的话,会报数组越界错误!代码示例如下:


num_list = [1,2,3,4,5]
print(num_list[0])
print(num_list[-3])
print(num_list[5])


运行结果如下


1
3
IndexError: list index out of range


③ 列表切片


通过索引的方式只能获取一个元素,如果想获取多个元素呢?只能通过多个下标先获取多个元素


再另外拼接一个列表么?当然不用,Python为我们提供了强大的「切片操作」。通过「:(冒号)分割前后索引来实现,要注意索引的边界是顾头不顾尾,比如a[1:3],包含的是a[1],a[2],不包含a[3]!详细用法示例如下:


num_list = [0, 1, 2, 3, 4, 5, 6, 7, 8, 9]
# 截取[0,2)间的数据,输出结果:[0, 1]
print(num_list[0:2])
# 截取[1,9],输出结果:[1, 2, 3, 4, 5, 6, 7, 8, 9]
print(num_list[1:])
# 截取[0,7],输出结果:[0, 1, 2, 3, 4, 5, 6, 7]
print(num_list[:-2])
# 截取所有元素,输出结果:[0, 1, 2, 3, 4, 5, 6, 7, 8, 9]
print(num_list[:])
# 截取[0,10)的元素,步长为2,输出结果:[0, 2, 4, 6, 8]
print(num_list[0:10:2])
# 截取[2,10)的元素,步长为3,输出结果:[2, 5, 8]
print(num_list[2::3])


④ 更新、追加、插入列表元素


更新 列表元素 直接通过下标索引获得对应元素进行修改 即可,比如上面的num_list,修改第二个元素的值只需:num_list[1] = 'xxx',另外,如果你不知道修改的元素下标索引是哪一个,但是你知道元素的值,可以先通过 index("元素的值") 找到对应的下标索引值,再去修改元素的值。


追加列表元素可以通过 append函数 在列表的表位追加一个元素,比如num_list调用append(10)后,追加后列表里的元素就变成了 [0, 1, 2, 3, 4, 5, 6, 7, 8, 9,10]。append函数只是在队尾插入一个元素,如果想插入到特定位置则需要使用insert函数 了。参数有两个,插入的下标位置(从0开始)插入元素值。比如num_list调用insert(3, 2.5)后的列表:[0, 1, 2, 2.5, 3, 4, 5, 6, 7, 8, 9, 10]


⑤ 删除列表元素


删除这里要分清楚是「想删除整个列表」还是「删除列表里某个元素」,代码示例如下:


num_list = [0, 1, 2, 3, 4, 5]
# remove()直接对列表中的元素进行检索删除,根据值不是下标,返回删除后的列表
num_list.remove(2)
print(num_list)
# del()根据下标进行检索删除,不返回删除值
del num_list[2]
print(num_list)
# pop()根据下标进行检索删除,不填下标默认删除最后一项,返回删除值
num_list.pop()
print(num_list)
# 删除列表引用
del num_list
print(num_list)


运行结果如下


[0, 1, 3, 4, 5]
[0, 1, 4, 5]
[0, 1, 4]
NameError: name 'num_list' is not defined


⑥ 列表遍历


可以通过循环对列表进行遍历,遍历的方式有多种,代码示例如下:


num_list = [0, 1, 2, 3, 4, 5]
for num in num_list:
    print(num, end='\t')
for index in range(0, len(num_list)):
    print(num_list[index], end='\t')
for index, value in enumerate(num_list):
    print('index = %d values = %d' % (index, value))


运行结果如下


0    1    2    3    4    5    
0    1    2    3    4    5    
index = 0 values = 0
index = 1 values = 1
index = 2 values = 2
index = 3 values = 3
index = 4 values = 4
index = 5 values = 5


⑦ 列表的其他操作


除了上面的这些常用操作外,还有一些其他的操作,使用代码示例如下:


a_list = [1, 2.0, 'a', True]
b_list = [3, 2, 9, 4, 11]
# 列表脚本操作符:可以使用+号组合列表,*号重复列表
print(a_list + a_list)
print(a_list * 2)
# 判断元素是否在列表中
print('a' in a_list)
# 获得列表长度
print('列表长度:%d' % len(a_list))
# 统计元素在列表中出现的次数,True的值也是1
print('列表中1出现的次数 %d' % a_list.count(1))
# 统计最大值,最小值,列表元素类型需要为数字
print('列表中的最大值 %d' % max(b_list))
print('列表中的最小值 %d' % min(b_list))
# 排序,本地排序(会修改值),返回None,只能比较数字!默认从小到大,
# 从大到小可以用可选参数,括号里加上key = lambda x:-1*x
b_list.sort()
print('升序排列:%s' % b_list)
b_list.sort(key=lambda x: -1 * x)
print('降序排列:%s' % b_list)
# 列表元素反转,会修改列表,返回None
a_list.reverse()
print('反转后的列表:%s' % a_list)
# extend()函数,在列表末尾一次性追加另一个列表中的多个值
a_list.extend(b_list)
print("追加后的列表:",a_list)


运行结果如下


[1, 2.0, 'a', True, 1, 2.0, 'a', True]
[1, 2.0, 'a', True, 1, 2.0, 'a', True]
True
列表长度:4
列表中1出现的次数 2
列表中的最大值 11
列表中的最小值 2
升序排列:[2, 3, 4, 9, 11]
降序排列:[11, 9, 4, 3, 2]
反转后的列表:[True, 'a', 2.0, 1]
追加后的列表: [True, 'a', 2.0, 1, 11, 9, 4, 3, 2]


4、元组(Tuple)


元组,「受限的列表」,元组中的元素不能修改,使用()小括号 表示。如果元组中只有一个元素,需要在元素后添加逗号,比如(1,),否则会被当做括号运算符使用!!!比起列表,元组占用更少的内存,常会用作不能修改的参数传递给函数。除了没有修改元素的函数外,其他的函数和列表基本一致,还提供了一个tuple()函数用于:将字符串和列表转换为元组


另外还有一点要注意:


如果在新建变量的时候,没有小括号包裹,只用逗号分隔,Python也会把这个变量认做元组,比如:a = 1,2,3,4,如果此时调用print(type(a)),输出的结果会是:<class 'tuple'>


相关文章
|
4天前
|
Python
探索Python中的列表推导式
【10月更文挑战第38天】本文深入探讨了Python中强大而简洁的编程工具——列表推导式。从基础使用到高级技巧,我们将一步步揭示如何利用这个特性来简化代码、提高效率。你将了解到,列表推导式不仅仅是编码的快捷方式,它还能帮助我们以更加Pythonic的方式思考问题。准备好让你的Python代码变得更加优雅和高效了吗?让我们开始吧!
WK
|
22天前
|
Python
python元组与列表的转换
在 Python 中,元组(tuple)和列表(list)是两种常用的数据结构,它们之间可以相互转换
WK
27 9
|
22天前
|
Python
探索Python中的列表推导式
【10月更文挑战第20天】在编程世界里,时间就是一切。Python的列表推导式是节约时间、简化代码的一大利器。本文将带你深入理解并有效利用这一强大工具,从基础到高级用法,让你的代码更加简洁高效。
|
22天前
|
Python
SciPy 教程 之 SciPy 模块列表 6
SciPy教程之常量模块介绍:涵盖公制、二进制(字节)、质量、角度、时间、长度、压强、体积、速度、温度、能量、功率及力学单位。示例展示了角度单位转换为弧度的几个常用常量。
17 7
|
22天前
|
Python
SciPy 教程 之 SciPy 模块列表 7
`scipy.constants` 模块提供了常用的时间单位转换为秒数的功能。例如,`constants.hour` 返回 3600.0 秒,表示一小时的秒数。其他常用时间单位包括分钟、天、周、年和儒略年。
17 6
WK
|
22天前
|
Python
Python创建元组
必须在这个元素后面加上一个逗号,否则 Python 会把它当作一个普通的带圆括号的表达式而不是元组
WK
14 4
|
19天前
|
Python
SciPy 教程 之 SciPy 模块列表 13
SciPy教程之SciPy模块列表13:单位类型。常量模块包含多种单位,如公制、二进制(字节)、质量、角度、时间、长度、压强、体积、速度、温度、能量、功率和力学单位。示例代码展示了如何使用`constants`模块获取零摄氏度对应的开尔文值(273.15)和华氏度与摄氏度的转换系数(0.5556)。
17 1
|
20天前
|
弹性计算 安全 数据处理
Python高手秘籍:列表推导式与Lambda函数的高效应用
列表推导式和Lambda函数是Python中强大的工具。列表推导式允许在一行代码中生成新列表,而Lambda函数则是用于简单操作的匿名函数。通过示例展示了如何使用这些工具进行数据处理和功能实现,包括生成偶数平方、展平二维列表、按长度排序单词等。这些工具在Python编程中具有高度的灵活性和实用性。
|
21天前
|
Python
SciPy 教程 之 SciPy 模块列表 9
SciPy教程之常量模块介绍,涵盖多种单位类型,如公制、质量、角度、时间、长度、压强等。示例展示了如何使用`scipy.constants`模块查询不同压强单位对应的帕斯卡值,包括atm、bar、torr、mmHg和psi。
13 1
|
21天前
|
Python
SciPy 教程 之 SciPy 模块列表 8
SciPy教程之常量模块单位类型介绍。该模块包含多种单位,如公制、质量、角度、时间、长度、压强、体积、速度、温度、能量、功率和力学单位。示例展示了部分长度单位的转换值,例如英寸、英尺、海里等。
14 1