Python中的列表(list)
心繁 2024-09-13 13:35:01 阅读 77
1、列表的定义
列表(list)是一个有序且可更改的集合,并且是最常用的 Python 数据类型。
在Python中,列表中元素的数据类型可以不同,可以包含整数、浮点、字符串等,当然,也可以包含列表、元组、字典和集合等。
在 Python 中,列表是使用方括号 <code>“[]” 编写的,在列表中使用“逗号(,)”来将列表中的元素隔断。当“[]”内没有元素时,该列表为空。
list1 = [22,45.32,"Python",["holle","word"],True]
# 含有五个元素的列表,其中["holle","word"]作为列表,是list1中一个单独的元素
list2 = [] # 空列表
2、列表的索引及切片
2.1索引
2.1.1正向索引
将列表中的元素从零开始进行编号,将编号作为其下标。想要输出列表中某一具体元素,只需带上其下标即可。
例:list1 = [22,45.32,"Python",["holle","word"],True],输出其中元素“Python”,则根据其编号下标为“2”。
list1 = [22,45.32,"Python",["holle","word"],True]
# 22 45.32 'Python' ['holle', 'word'] True
# 0 1 2 3 4
print(list1[2])
# 输出结果为"Python"
2.1.2反向索引
同时下标也可以从后往前进行计算。即从最后一个元素开始,将其下标记为“-1”,每向前一个元素,下标减一。
例: list1 = [22,45.32,"Python",["holle","word"],True],输出其中元素“Python”,则根据其编号下标为“-3”。
list1 = [22,45.32,"Python",["holle","word"],True]
# 22 45.32 'Python' ['holle', 'word'] True
# -5 -4 -3 -2 -1
print(list1[-3])
# 输出结果为"Python"
2.2切片
根据索引方法,可以用下表表示:
列表元素 | 22 | 45.32 | Python | ["holle","word"] | True |
正向索引 | 0 | 1 | 2 | 3 | 4 |
反向索引 | -5 | -4 | -3 | -2 | -1 |
切片是将列表中某一段相关的元素进行输出。即一次输出列表中的多个元素。
例:list1 = [22,45.32,"Python",["holle","word"],True],同时输出其中元素“45.32”“Python”“["holle","word"]”,则再输出时将单个下标替换为"起始下标:结束下标+1“”。起始下标为输出第一个元素的下标,结束下标为输出的最后一个元素的下标,下标不可超出列表中最后一个元素的下标。
<code>list1 = [22,45.32,"Python",["holle","word"],True]
# 22 45.32 'Python' ['holle', 'word'] True
# 0 1 2 3 4
print(list1[1:4])
# 输出结果为:“[True, ['holle', 'word'], 'Python']”
若想输出的为“22”“Python”“True”,元素之间间隔为一,则在输出时在下标后加入步长(即间距)。
list1 = [22,45.32,"Python",["holle","word"],True]
# 22 45.32 'Python' ['holle', 'word'] True
# 0 1 2 3 4
print(list1[0:5:2])
# 5后面的2为步长,即每两个进行一次输出,当没有写明时系统默认为1
# 输出结果为:[22, 'Python', True]
若想进行倒叙输出,则需要将步长改为“-1”,要将下标大的作为起始下标,而结束下标则需要减一。
例:方法一:使用正向索引下标。
list1 = [22,45.32,"Python",["holle","word"],True]
# 22 45.32 'Python' ['holle', 'word'] True
# 0 1 2 3 4
# -5 -4 -3 -2 -1
print(list1[4:0:-1]) # 输出结果:[True, ['holle', 'word'], 'Python', 45.32]
print(list1[4:-1:-1]) # 输出结果[]
由于下标“4”和“-1”表示同一个元素,所以输出结果为空,该方法不能输出第一个列表元素。
方法二:使用反向索引下标
list1 = [22,45.32,"Python",["holle","word"],True]
# 22 45.32 'Python' ['holle', 'word'] True
# 0 1 2 3 4
# -5 -4 -3 -2 -1
print(list1[-1:-6:-1]) # 输出结果[True, ['holle', 'word'], 'Python', 45.32, 22]
3、列表相互转化
3.1列表与字符串
3.1.1列表转字符串
将列表中的元素转化为字符串时,使用一个空字符串接收由列表转换的字符串。
可使用内置函数“str”直接将列表转换为字符串,但是这种方法会将列表中的“[]”“,”以及引号也作为字符串进行转化
list1 = ["a","b","c","d","e"]
str1 = str(list1)
print(str1)
# 输出结果为:['a', 'b', 'c', 'd', 'e']
也可使用字符拼接的“join拼接方法”。转换为字符串时,列表内的元素也只能是字符串。
list1 = ["a","b","c","d","e"]
str1 = "".join(list1)
print(str1)
# 输出结果为:abcde
3.1.2字符串转列表
将字符串转化为列表,可以使用内置函数“list”直接将字符串转化为列表。
str1 = "abcde"
list1 = list(str1)
print(list1)
# 输出结果为:['a', 'b', 'c', 'd', 'e']
4、列表的添加、删除、修改
4.1添加
4.1.1添加单个元素(append)
在列表中添加单个元素时,可以使用函数“append”。
使用方法(列表名称.append("添加元素”)),例:list1.append("f")
元素添加为位置在列表的最后。
list1 = list1 = ['a', 'b', 'c', 'd', 'e']
list1.append('f')
print(list1)
# 输出结果为:['a', 'b', 'c', 'd', 'e', 'f']
4.1.2添加多个元素(extend)
在列表中添加多个元素时,可以使用函数“extend”。
使用方法(列表名称.extend(["添加元素”,"添加元素”])),例:list1.extend(["f",“h”])
元素添加为位置在列表的最后。
list1 = ['a', 'b', 'c', 'd', 'e']
list1.extend(['f','h'])
print(list1)
# 输出结果为:['a', 'b', 'c', 'd', 'e', 'f', 'h']
4.1.3指定位置添加元素(insert)
当想在列表的任意位置加入元素时,可以使用函数“insert”。
使用方法(列表名称.insert(下标,'元素'),例:list1.insert(2,'m')
在指定的下标位置加入元素,原本位置的元素及其后面元素下标均往后加一。
list1 = ['a', 'b', 'c', 'd', 'e']
list1.insert(0,'h')
print(list1)
# 输出结果为:['h', 'a', 'b', 'c', 'd', 'e']
4.2删除
4.2.1删除位置元素(pop)
删除列表最后一个或指定位置元素,使用函数“pop”。
删除最后一个元素:"列表名称.pop()”,例:list1.pop()
删除指定位置元素:"列表名称.pop(位置下标)”,例:list1.pop(3)
当pop内未指明下标时,默认删除最后一位元素。
list1 = ['a', 'b', 'c', 'd', 'e']
list1.pop() # 删除“e”
print(list1)
# 输出结果为:['a', 'b', 'c', 'd']
list1 = ['a', 'b', 'c', 'd', 'e']
list1.pop(2) # 删除“c”
print(list1)
# 输出结果为:['a', 'b', 'd', 'e']
4.2.2删除指定元素(remove)
删除列表中特定的元素时,使用函数“remove”,删除的是出现的第一个指定元素,后面在此出现相同元素并不会被删除。可用循环来进行所有指定元素的删除。
列表名称.remove("元素”),例:list1.remove(‘e’)
list1 = ['a', 'b', 'e','c', 'd', 'e']
list1.remove('e') # 删除“e”
print(list1)
# 输出结果为:['a', 'b', 'c', 'd', 'e']
4.2.3清除(clear)
使用clear,清除列表中的所有元素。
列表名称.clear(),例:list1.clear()
list1 = ['a', 'b', 'e','c', 'd', 'e']
list1.clear()
print(list1)
# 输出结果为:[]
4.3修改
直接使用赋值的方法,让想要修改元素的下标等于修改元素。
列表名称(下标) = ‘修改元素’。例:list1(0) = ‘l’
list1 = ['a', 'b', 'e','c', 'd', 'e']
list1[1] = 'j' #修改“b”为“j”
print(list1)
# 输出结果为:['a', 'j', 'e', 'c', 'd', 'e']
5、列表的其他应用
5.1统计次数、获取长度
统计某个元素出现的次数,使用“count”
统计列表的总长度,使用“len”
list1 = ['a', 'b', 'e','c', 'd', 'e']
num = list1.count("e") # 统计“e”出现的次数
print(num)
# 输出结果为:2
len1 = len(list1) # 统计列表的长度
print(len1)
# 输出结果为:6
5.2排序、翻转
5.2.1排序(sort、sorted)
sort在排序时,是在对原列表本身进行改变,不需要另外一个空列表来进行接收,没有返回值。
sorted在排序时,并不是对原列表本身进行改变,这时需要一个空列表进行接收排序后的列表,有返回值。
sort、sorted均默认正序排序。
list = [7,4,9,88,1,5.6]
list1 = [7,4,9,88,1,5.6]
list2 = list.sort()
print(list) # 输出:[1, 4, 5.6, 7, 9, 88]
# 列表本身改变,在列表内部进行排序
print(list2) # 输出:None
# 无法接收到排序后的列表
list3 = sorted(list1)
print(list1) # 输出:[7, 4, 9, 88, 1, 5.6]
# 列表本身没有改变,在列表外部进行排序
print(list3) # 输出:[1, 4, 5.6, 7, 9, 88]
# 接收到排序后的列表
逆序排序:添加函数(reverse)
使用函数“reverse”可以对列表进行逆序排序,当reverse的值等于True时,进行逆序排序;当reverse的值等于False时,进行正序排序。
list = [7,4,9,88,1,5.6]
list.sort(reverse = True)
print(list) # 输出:[88, 9, 7, 5.6, 4, 1]
list.sort(reverse = False)
print(list) # 输出:[1, 4, 5.6, 7, 9, 88]
list1 = [7,4,9,88,1,5.6]
list3 = sorted(list1,reverse = True)
print(list3) # 输出:[88, 9, 7, 5.6, 4, 1]
list3 = sorted(list1,reverse = False)
print(list3) # 输出:[1, 4, 5.6, 7, 9, 88]
在对列表中的字符串进行排序时,通过ASCLL码表的值进行排序。同时若列表元素中字符串有多个元素时,用第一个元素的ASCLL码值进行比较大小。
list = ["B","bac","cde","a","Da"]
list.sort()
# 通过比较每个元素中的第一个字母的ASCLL码值来比较大小排序
# 即比较“B”“b”“c”“a”“D”的ASCLL码值进行排序
print(list)
# 输出结果为:['B', 'Da', 'a', 'bac', 'cde']
ASCLL码表可在网上进行查询。
5.2.2翻转(reverse)
对列表进行翻转,与排序sort相同,没有返回值,在列表内部进行翻转。
list = ["B",7,4,9,88,1,5.6,"a"]
list.reverse()
print(list)
# 输出结果为:['a', 5.6, 1, 88, 9, 4, 7, 'B']
5.3复制(copy)
生成一个新的列表,与元列表中的元素完全相同,但是两个列表的存储地址不同。两个列表并不是同一个列表。
list1 = ['a', 'b', 'e','c', 'd', 'e']
list2 = list1.copy()
print(list1,id(list1))
# 输出list1,并输出list1的存储地址
# 输出结果为:['a', 'b', 'e', 'c', 'd', 'e'] 2664088953352
print(list2,id(list2))
# 输出list2,并输出list2的存储地址
# 输出结果为:['a', 'b', 'e', 'c', 'd', 'e'] 2664088953416
上一篇: [C++#33][异常] 错误码 | 抛出与捕获 | 异常安全 | 异常体系
下一篇: 《JavaEE进阶》----12.<SpringIOC&DI【扫描路径+DI详解+经典面试题+总结】>
本文标签
声明
本文内容仅代表作者观点,或转载于其他网站,本站不以此文作为商业用途
如有涉及侵权,请联系本站进行删除
转载本站原创文章,请注明来源及作者。