Python中的列表(list)

1、列表的定义

列表(list)是一个有序且可更改的集合,并且是最常用的 Python 数据类型。

在Python中,列表中元素的数据类型可以不同,可以包含整数、浮点、字符串等,当然,也可以包含列表、元组、字典和集合等。

在 Python 中,列表是使用方括号 “[]” 编写的,在列表中使用“逗号(,)”来将列表中的元素隔断。当“[]”内没有元素时,该列表为空。

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切片

根据索引方法,可以用下表表示:

列表元素2245.32Python["holle","word"]True
正向索引01234
反向索引-5-4-3-2-1

切片是将列表中某一段相关的元素进行输出。即一次输出列表中的多个元素。

例:list1 = [22,45.32,"Python",["holle","word"],True],同时输出其中元素“45.32”“Python”“["holle","word"]”,则再输出时将单个下标替换为"起始下标:结束下标+1“”。起始下标为输出第一个元素的下标,结束下标为输出的最后一个元素的下标,下标不可超出列表中最后一个元素的下标。

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
  • 16
    点赞
  • 12
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值