Python程序开发——第三章 列表与元组

简介: Python程序开发——第三章 列表与元组

前言


由于列表和元组比较相似,所以放在一起总结,它们的区别在于元组和字符串一样是不可修改的,而列表能够被修改,字符串则不能。


一、列表


(一)列表的创建


在Python中有两种方式可以创建列表。

1、第一种是可以通过使用中括号,即[]来创建列表,其中列表的元素使用逗号分隔开,其中字符串类型可以用单引号或双引号都可以表示。

如下python代码,列表a中元素的类型为字符串,列表c是一个空列表:

a = ["C", "S", "D", "N"]
b = [1, 2, 3.5, 6.66]
c = []
print(a)
print(b)
print(c)

运行结果如下:

1667096792967.jpg

2、第二种是可以通过内置函数list()来创建列表,要注意该内置函数必须要接收的参数是可迭代的。

如下python代码,也可以在list()函数中通过[]来创建含多个元素的列表:

a = list("csdn")
b = list("123456")
c = list([1, 2, "python", "java"])
d = list()
print(a)
print(b)
print(c)
print(d)

运行结果如下:

1667096815660.jpg

可以通过range()函数生成一个数字范围的对象,比如range(0,5)表示从0开始一直到4(不包括5),而range(0,5,2)的添加了一个参数,步长(间隔)变成2,该函数可与列表一起使用从而生成数字序列:

print(list(range(5)))
print(list(range(0,5)))
print(list(range(0,5,2)))#以列表形式输出数字0至5但不包括5,步长为2
print(list(range(5,0,-1)))#以列表形式输出数字5至0但不包括0,步长为1
print(list(range(5,0,-2)))#以列表形式输出数字5至0但不包括0,步长为2

运行结果如下:

1667096831362.jpg


(二)访问列表元素


可以通过索引和切片的方式访问列表元素的值,这里的两种方式与之前的字符串的索引和切片一样,索引从0开始,都是可以获取指定元素或部分元素,由于列表和字符串一样,它们都是可迭代对象(后面讲的元组、字典、集合也是一样)。

例如列表a=["Python","Java","c","c#"],其正向索引和反向索引:

正向索引:Python对应0,Java对应1,c对应2,c#对应3

反向索引:c#对应-1,c对应-2,Java对应-3,Python对应-4。

1、索引,获取列表中指定元素,如下python代码,通过正向、负向索引来访问列表中的元素:

a = ["python", "java", "c", "c#", "c++"]
print("使用索引来访问列表中的元素:")
print(a[2])
print(a[0])
print(a[-1])

运行结果如下:

1667096846570.jpg

2、切片,获取列表中部分元素,从而得到一个新的列表,比如[1:3]它表示的是返回下标1至2的元素,而并不会返回下标为3的元素,如下python代码,通过切片来访问列表中部分元素,这里的print(a[:])输出的是列表的所有元素:

a = ["python", "java", "c", "c#", "c++"]
print("使用切片来访问列表中的元素:")
print(a[:])#输出列表中的所有元素
print(a[::-1])#逆序输出列表中的所有元素
print(a[:3])#输出列表中索引为开头至3的元素,但不包括3
print(a[3:])#输出列表中索引为3至末尾的元素
print(a[1:3])#输出列表中索引为1至3的元素,但不包括3
print(a[0:3:2])#输出列表中从索引为0至3且步长为2的元素,但不包括3
print(a[0:3:1])#输出列表中从索引为0至3且步长为1的元素,但不包括3
print(a[3:0:-1])#输出列表中从索引为3至0且步长为1的元素,但不包括0
print(a[3:0:-2])#输出列表中从索引为3至0且步长为2的元素,但不包括0

运行结果如下:

1667096876622.jpg


(三)列表的增删改


1、添加列表元素,可以通过函数append()、extend()、insert()三个内置函数来添加列表新的列表元素。

(1)insert()函数用于将元素插入到列表的指定位置;

(2)append()函数用于在列表末尾添加新的元素;

(3)extend()函数用于在列表末尾添加另一个列表。

其示例如下python代码:

a = ["python", "java"]
a.insert(0, "c++")
a.insert(-1, "c")
print(a)
b = ["1班", "2班"]
b.append("3班")
print(b)
c1 = ["1班", "2班"]
c2 = ["3班", "4班", "5班"]
c1.extend(c2)
print(c1)

运行结果如下:

1667096904826.jpg

2、删除列表元素,可以通过del、remove()、pop()三种方法来删除列表中的元素。

(1)del语句用于删除列表中指定元素,可以使用索引或切片来指定要删除的元素。

其示例如下python代码:

a = ["python", "java", "c", "c++"]
del a[0]
print(a)
del a[0:3:2]
print(a)

运行结果如下:

1667096924066.jpg

(2)remove()函数用于删除列表中指定元素,若有多个指定元素,则只删除第一个相同的指定元素;

其示例如下python代码:

b = ["python", "java", "c", "c++", "c"]
b.remove("java")
print(b)
b.remove("c")
print(b)

运行结果如下:

1667096945702.jpg

(3)pop()函数用于删除列表中指定元素,可以通过索引来指定要删除元素,若不指定,则只删除该列表的末尾元素。

其示例如下python代码:

c = [1, 2, 3, 4, 5]
c.pop(0)
print(c)
c.pop()
print(c)

运行结果如下:

1667096961087.jpg

3、修改列表元素,可以通过索引访问元素并对该元素进行修改,即重新赋值该元素。

其示例如下python代码:

a = ["python", "java", "c", "c++"]
a[3] = "c#"
print(a)

运行结果如下:

1667096977700.jpg


(四)列表的遍历


由于列表是个可迭代对象,可以通过for循环来遍历列表中的各元素。

例如下列Python代码,通过for循环遍历列表并依次输出临时变量:

a = ["Python", "CSS", "Java", "C++"]
for i in a:
    print(i)
b = [100, 200, 300]
for l in b:
    print(l)

运行结果如下:

1667096996726.jpg


(五)列表的排序


可以通过sort()、sorted()、reverse()三种函数对列表进行排序,要注意排序后的列表将会替换原本的列表。

(1)sorted()函数用于将列表中的元素升序排序,例如下列python代码:

a = ["20", "-1.2", "0", "1"]
print(sorted(a))

运行结果如下:

1667097019191.jpg

(2)sort()函数有两个参数,参数key指定排序规则,可以为列表支持的函数,而参数reverse指定列表元素排序的方式(默认值为False,表示升序排列,若reverse=True,则表示降序排列)。

例如下列Python代码,列表a只设置了参数reverse,且reverse=True,表示将列表按降序排列;通过sort()函数对b列表设置参数key,且key=len,内置函数len()函数可以用于计算字符串的长度,这里根据字符串的字符长度进行排序,且参数key为默认值即升序排列:

a = ["20", "-1.2", "0", "1"]
a.sort(reverse=True)
print(a)
b = ["python", "php", "c", "c#"]
b.sort(key=len)
print(b)

运行结果如下:

1667097042779.jpg

例如已知列表li_num1=[4,5,2,7,0,2]和li_num2=[3,6,-1],请将这两个列表合并为一个列表,并将合并后的列表中的元素按照从小到大的顺序排列,如下代码,:

li_num1 = [4, 5, 2, 7, 0, 2]
li_num2 = [3, 6, -1]
li_num1.extend(li_num2)  # 通过extend()函数在li_num1末尾插入li_num2列表
li_num1.sort()  # 通过sort()函数将li_num1列表中的元素进行排序,由于未给参数即为升序排序
print(li_num1)

运行结果如下:

1667097061472.jpg

(3)reverse()函数用于将列表中的元素顺序颠倒,注意这里的不是降序排序,而是将原来列表元素的顺序颠倒过来。

例如,下列python代码:

a = ["20", "-1.2", "0", "1"]
a.reverse()
print(a)

运行结果如下,可以发现列表中元素顺序被颠倒:

1667097077253.jpg


(六)列表的嵌套


列表可以进行嵌套,即在一个列表中嵌套列表。

例如下列Python代码,访问嵌套列表中的值:

a = ["南区", "北区"]
b = ["1班", "2班"]
c = [a, b]
print(c)
print(c[0][-1])
print(c[-1][-1])

运行结果如下:

1667097099312.jpg

也可以向嵌套的内层列表中添加元素,首先要获取内层列表,然后再添加,如下python代码,向第一个列表中添加元素,且在内层列表的第一个:

a = ["南区", "北区"]
b = ["1班", "2班"]
c = [a, b]
print(c)
c[0].insert(0, "东区")
print(c)

运行结果如下:

1667097114956.jpg


二、元组


(一)元组的创建


元组的创建方式也有两种,元组的创建与列表差不多,相比列表,元组内的元素不允许修改。

1、第一种方式使用的是圆括号,即()来创建列表,元组内的元素也是使用逗号分隔开,字符串类型可以用单引号或双引号都可以表示。

不过也可以不需要圆括号来创建元组,一般最好加上。

例如,下列Python代码:

a = ()
b = ("b", "l", "u", "e")
c = (1, 2, 3, 4, 5, 6)
d = "第一", "第二", "第三", "第四"
print(a, b, c, d)


运行结果如下:

1667097135836.jpg

注:当元组只包含一个元素时,也要在元素后面加上逗号,表示这是个元组。

2、第二种方式是通过tuple()函数来创建元组,该函数接收的元素是可迭代的,若函数内没有值,则创建一个空元组。

例如,下列Python代码,其中元组d中元组的元素为一个列表:

a = tuple()
print(a)
b = tuple("tooth")
print(b)
c = tuple("123456")
print(c)
d = tuple(["对", "错"])
print(d)

运行结果如下:

1667097154715.jpg


(二)访问元组元素


和列表一样,也是可以通过索引和切片来访问元组的元素,例如下列python代码:

a = tuple("tooth")
b = tuple("123456")
print(a[0])
print(a[1])
print(b[2:5:1])

运行结果如下:

1667097173781.jpg


(三)元组的连接组合和删除


1、由于元组中的元素是不能修改的,即每个元素的指向是永远没有改变的,除非元组中含有可变类型的数据,比如元组中的元素是一个列表时。

可以通过对元组连接组合,即将两个元组组合在一起形成一个新的元组,例如下列python代码:

a = tuple("语文")
b = tuple("数学")
c = a + b
print(c)

运行结果如下:

1667097191705.jpg

例如给定一个元组num=(“p”,“y”,“t”,[“h”,“n”]),对元组内的列表添加“o”字符,首先通过索引元组,然后通过对元组中的列表进行insert()在指定位置插入字符“o”,下列python代码:

num = ("p", "y", "t", ["h", "n"])
num[3].insert(1, "o")
print(num)


运行结果如下:

1667097206702.jpg

2、虽然元组中的元素不能删除,但是可以使用del语句来删除整个元组,例如下列python代码:

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