Python ❀ 列表与元组
Posted 无糖可乐没有灵魂
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Python ❀ 列表与元组相关的知识,希望对你有一定的参考价值。
文章目录
1、列表概念
列表是一系列按照特定顺序排列的元素集合;元素之间互相独立,没有联系;在Python中使用 [] 表示列表,其中元素使用 , 互相隔离;
a = ["aaa","bbb","ccc",11,22,33,44]
print(a)
输出结果:
['', 'bbb', 'ccc', 11, 22, 33, 44]
1.1 访问列表元素
列表是一个有序集合,因此要访问列表中的元素,只需要将该元素的索引告诉Python即可返回对应的元素;
print(a[0])
输出结果:
aaa
当请求列表中的元素时,Python只返回元素的值,并不携带括号与引号;也可以将元素的返回值作为字符串进行一些其他操作,如首字母大写等;
print(a[0].title())
输出结果:
Aaa
1.2 索引(从0开始并非1)
在Python中第一个元素的索引号为0,并不是1;列表的最后一个元素索引为 -1, 当然可以使用正常的排序索引获取末尾值;
a = ["aaa","bbb","ccc",11,22,33,44]
print(a[0])
print(a[1])
print(a[-1])
print(a[6])
输出结果:
aaa
bbb
44
44
1.3 列表中的值
可以使用列表中的值进行其他操作,如字符串的拼接,数字的运算等;
a = ["aaa","bbb","ccc",11,22,33,44]
txt = a[0] + a[1]
num = a[3] + a[4]
print(txt,num)
输出结果:
aaabbb 33
2、修改、添加、删除列表元素
列表的创建大多数都是动态的,随着程序的运行而增加、修改、删除元素;
2.1 修改列表元素
若需要修改某个列表其中的元素,可以通过元素的索引进行修改,如下代码:
a = ["aaa","bbb","ccc",11,22,33,44]
a[0] = 'ddd'
print(a[0])
输出结果:
ddd
2.2 添加列表元素
添加元素分为末尾添加和插入两种;
2.2.1 末尾添加列表元素
a = ["aaa","bbb","ccc",11,22,33,44]
a.append('eee')
print(a[-1])
输出结果:
eee
2.2.2 插入列表元素
a = ["aaa","bbb","ccc",11,22,33,44]
a.insert(3,'fff') #在索引为3的位置添加字符串为fff的值
print(a[3])
输出结果:
fff
2.3 删除列表元素
在删除元素时也分别有两种删除方法:以索引号进行元素删除操作、末尾删除元素、直接删除元素的值;
2.3.1 以索引删除
使用del()方法删除需要明确知道所删除元素值的相对应索引;
a = ["aaa","bbb","ccc",11,22,33,44]
del a[1]
print(a)
输出结果:
['aaa', 'ccc', 11, 22, 33, 44]
2.3.2 末尾删除
使用pop()删除会返回删除的内容,因此可以将其赋值给某一个变量进行调用并进行其他操作;
a = ["aaa","bbb","ccc",11,22,33,44]
b = a.pop(3)
print(a)
print(b)
输出结果:
['aaa', 'bbb', 'ccc', 22, 33, 44]
11
当删除的元素不需要被使用时,推荐使用del()方法删除;若是删除的元素仍需要被再一次调用,推荐使用pop()方法;
2.3.3 删除值
当不清楚元素的索引时,可以直接操作删除列表中某元素的值;
a = ["aaa","bbb","ccc",11,22,33,44]
a.remove('aaa')
print(a)
输出结果:
['bbb', 'ccc', 11, 22, 33, 44]
由于使用remove()删除并无返回信息,因此可以将其删除的内容指定到某个变量,进行留存;
a = ["aaa","bbb","ccc",11,22,33,44]
b = "aaa"
a.remove(b)
print(a)
print(b)
输出结果:
['bbb', 'ccc', 11, 22, 33, 44]
aaa
当remove()删除完成后,删除的值仍保存在变量中,仍可以进行其他相关操作;
3、组织排列
在创建列表的过程中,元素的排序取决于录入元素的顺序,因此需要控制其排列顺序,以构建的顺序进行排列是非常有必要的;
3.1 永久性排序
使用sort()方法可以使得列表永久性排序;可以使用参数reverse=True进行反向排序;
sort()只支持单一的类型数据进行排序,如str或int,否则会报类型错误;
a = ["ddd","aaa","rrr"]
a.sort()
print(a)
a.sort(reverse=True)
print(a)
输出结果:
['aaa', 'ddd', 'rrr']
['rrr', 'ddd', 'aaa']
若列表内包含两种类型的数据时,sort()排序会报错;
a = ["aaa","bbb",131,223,4,1,14]
a.sort()
print(a)
输出结果:
Traceback (most recent call last):
File "D:\\Python\\Test\\Source\\venv\\05_study_test.py", line 2, in <module>
a.sort()
TypeError: '<' not supported between instances of 'int' and 'str'
3.2 临时性排序
若是需要保留原来的排列顺序,并且以特定的顺序呈现出来,可以使用函数sorted(),也支持传入参数reverse=True进行反向排序;
sorted()函数也只能支持单一的类型数据进行排序,否则会报类型错误;
a = [131,223,4,1,14]
print(sorted(a))
print(a)
输出结果:
[1, 4, 14, 131, 223]
[131, 223, 4, 1, 14]
3.3 反转输出列表元素
反转输出指的是以现在的元素顺序进行反向输出;
a = [131,223,4,1,14]
a.reverse()
print(a)
输出结果:
[14, 1, 4, 223, 131]
3.4 确认列表长度
使用len()函数确认列表长度,返回值为int类型;
a = [131,223,4,1,14]
b = len(a)
print(a)
print(type(b))
输出结果:
[131, 223, 4, 1, 14]
<class 'int'>
4、索引错误
在列表的元素查询比较容易出现的错误为索引错误;
a = [131,223,4,1,14]
print(a[10])
输出结果:
Traceback (most recent call last):
File "D:\\Python\\Test\\Source\\venv\\05_study_test.py", line 2, in <module>
print(a[10])
IndexError: list index out of range
如上代码,索引错误最常见的引发原因为列表索引超出范围;
5、遍历列表
遍历列表:对列表中的每个元素执行相同的操作;此行为在代码中被称为循环操作,因此我们可以使用for循环来执行遍历操作;
5.1 for循环遍历列表
循环非常重要,可以自动完成重复的工作;
a = [131,223,4,1,14]
for i in a:
print(i)
输出结果:
131
223
4
1
14
如上代码所示,以变量 i 的不同赋值来输出列表 a 中元素的值,最后使用print()打印;
for循环每次重复操作结束自动执行换行,可以传递参数end=""修改结束符号是否需要换行;
a = [131,223,4,1,14]
for i in a:
print(i,end=",")
输出结果:
131,223,4,1,14,
6、缩进错误与冒号缺失
Python根据缩进判断代码行与前一个代码行的关系;
6.1 缩进错误
主要出现以下几种情况:
- 忘记代码缩进;
- 不必要的缩进;
- 错误的缩进;
a = [131,223,4,1,14]
输出结果:
File "D:\\Python\\Test\\Source\\venv\\05_study_test.py", line 1
a = [131,223,4,1,14]
IndentationError: unexpected indent
缩进错误,出现意想不到的缩进;
6.2 冒号缺失
a = [131,223,4,1,14]
for i in a
print(i,end=",")
输出结果:
File "D:\\Python\\Test\\Source\\venv\\05_study_test.py", line 2
for i in a
^
SyntaxError: expected ':'
语法错误,缺少冒号;
7、数字列表
若是需要存储一些有规律的数字,那么直接通过列表的编写就显得十分繁琐,因此Python提供了很多的函数,来高效的完成此工作;
7.1 使用range()函数
函数 range() 能够较快的生成一系列数字;
代码格式:
range(起始元素,结束元素,步长)
需要注意的是结束数字为开区间,无法取值,若需要取值结束数字加1即可;
for i in range(1,9,2):
print(i)
输出结果:
1
3
5
7
使用range()函数创建列表;
ls1 = list(range(0,10))
print(ls1)
输出结果:
[0, 1, 2, 3, 4, 5, 6, 7, 8, 9]
7.2 数字列表的统计计算
通过列表计算其元素最大值、最小值、总和;
ls1 = list(range(0,10))
print(ls1)
a = max(ls1)
b = min(ls1)
c = sum(ls1)
print(a,b,c)
输出结果:
[0, 1, 2, 3, 4, 5, 6, 7, 8, 9]
9 0 45
8、列表中的一部分
处理Python中的一部分元素被称为切片;
8.1 切片
代码格式:
[起始元素 : 结束元素 : 步长]
切片与range函数一样,结尾取值需要加1;切片的遍历也可以直接使用for循环,与列表的遍历方式完全一致(切片后的数据相当于列表的一个子列表)
ls1 = list(range(0,10))
print(ls1)
print(type(ls1))
a = ls1[1:3]
print(a)
输出结果:
[0, 1, 2, 3, 4, 5, 6, 7, 8, 9]
<class 'list'>
[1, 2]
结尾取值如下:
ls1 = list(range(0,10))
print(ls1)
a = ls1[1:3]
print(a)
b = ls1[1:3+1]
print(b)
输出结果:
[0, 1, 2, 3, 4, 5, 6, 7, 8, 9]
[1, 2]
[1, 2, 3]
8.2 复制列表
由于切片的参数,起始元素与结束元素不定义时,则以为全部切片,等同于复制操作;
ls1 = list(range(0,10))
print(ls1)
a = ls1[:]
print(a)
输出结果:
[0, 1, 2, 3, 4, 5, 6, 7, 8, 9]
[0, 1, 2, 3, 4, 5, 6, 7, 8, 9]
9、元组
在使用Python中有时候我们需要创建一些列不可修改的元素,元组就可以满足这个需求,元组将元素变为不可变类型;
9.1 元组与遍历
代码格式:
(起始元素 : 结束元素 : 步长)
元组看起来与列表一样,使用小括号进行标识,索引方式与列表完全一致,唯一的区别是元素不可修改;
tp1 = tuple(range(0,10))
print(tp1)
print(type(tp1))
输出结果:
(0, 1, 2, 3, 4, 5, 6, 7, 8, 9)
<class 'tuple'>
元组的遍历与列表完全一致;
for i in tp1[0:3]:
print(i)
输出结果:
0
1
2
元组不可修改,但是可以给元组进行变量赋值,修改变量的值进而修改元组的内容;
以上是关于Python ❀ 列表与元组的主要内容,如果未能解决你的问题,请参考以下文章