📜  Python列表list

📅  最后修改于: 2020-07-07 04:18:58             🧑  作者: Mango

列表就像用其他语言声明的数组一样。列表不一定总是同质的,这使其成为Python中最强大的工具。单个列表可能包含数据类型,例如整数,字符串以及对象。列表是可变的,因此在创建后也可以对其进行更改。
Python中的列表是有序的,并且有一定数量。根据确定的序列对列表中的元素进行索引,并使用0作为第一个索引来完成列表的索引。列表中的每个元素在列表中都有其确定的位置,这允许复制列表中的元素。
注意: 列表是用于保留数据序列并对其进行进一步迭代的有用工具。

建立列表

只需将序列放在方括号[]中即可创建Python中的列表。与Sets不同,list不需要内置函数来创建。
注: 与Sets不同,列表可能包含可变元素。

# Python代码,展示list的创建
# 创建list
List = []
print("初始化空list: ")
print(List)
# 使用string,创建list
List = ['芒果文档']
print("\n使用string,创建list : ")
print(List)
# 使用多个值创建list
List = ["芒果", "文档"]
print("\n使用多个值创建list : ")
print(List[0])
print(List[1])
# 创建多维度list
# 在一个list内,嵌套list
List = [['芒', '果'] , ['文档']]
print("\n多维度list : ")
print(List)

输出:

初始化空list:
[]
使用string,创建list
['芒果文档']
 使用多个值创建list : 芒果 文档 多维度list : [['芒', '果'] , ['文档']]

列表可能包含具有不同位置的重复值,因此,可以在创建列表时将多个不同或重复的值作为序列传递。

# Python代码,创建list,使用多个值
# 并且包含重复值
List = [1, 2, 4, 4, 3, 3, 3, 6, 5]
print("\n使用多个值的List: ")
print(List)
# 创建list,使用多个数据类型
# 有整型数字和字符串string
List = [1, 2, '芒果', 4, '芒果', 6, '文档']
print("\n使用多个数据类型的List: ")
print(List)

输出:

使用多个值的List:
[1, 2, 4, 4, 3, 3, 3, 6, 5]
使用多个数据类型的List:
[1, 2, '芒果', 4, '芒果', 6, '文档']

将元素添加到列表

使用append()方法

可以使用内置append()函数,将元素添加到列表中。使用append()方法一次只能将一个元素添加到列表中,如果使用该方法添加多个元素append(),则使用循环。由于元组是不可变的,因此也可以使用append方法将元组添加到列表中。与集合Set不同,列表也可以使用append()方法添加到现有列表中。

# Python代码,展示如何对list进行添加操作
# 创建list
List = []
print("初始化空list: ")
print(List)
# 对list进行添加元素
List.append(1)
List.append(2)
List.append(4)
print("\n添加3个新元素的list: ")
print(List)
# 使用迭代器对list进行元素添加
for i in range(1, 4):
    List.append(i)
print("\n循环了1-3之后的list: ")
print(List)
# 给list添加元组Tuples
List.append((5, 6))
print("\n添加元组Tuples之后的list: ")
print(List)
# 给list添加一个list
List2 = ['芒果', '文档']
List.append(List2)
print("\n添加list之后的list: ")
print(List)

输出:

初始化空list:
[]
添加3个新元素的list:
[1, 2, 4]
循环了1-3之后的list:
[1, 2, 4, 1, 2, 3]
添加元组Tuples之后的list:
[1, 2, 4, 1, 2, 3, (5, 6)]
添加list之后的list:
[1, 2, 4, 1, 2, 3, (5, 6), ['芒果', '文档']]

使用insert()方法

append()方法仅适用于在列表末尾添加元素,而对于所需位置的添加元素,则使用insert()方法。与append()仅需要一个参数不同,insert()方法需要两个参数(位置,值)。

# Python代码,展示如何对list进行添加操作
# 创建list
List = [1,2,3,4]
print("初始化list: ")
print(List)
# 在特定位置插入元素,使用insert()方法
List.insert(3, 12)
List.insert(0, '芒果')
print("\n使用insert()方法添加元素之后的list: ")
print(List)

输出:

初始化list:
[1, 2, 3, 4]
使用insert()方法添加元素之后的list:
['芒果', 1, 2, 3, 12, 4]

使用extend()方法

append()insert()方法外,还有一种方法用于元素添加:extend()。该方法用于在列表末尾同时添加多个元素。注: append()和extend()方法只能在末尾添加元素。

# Python代码,展示如何对list进行添加操作
# 创建list
List = [1,2,3,4]
print("初始化list: ")
print(List)
# 在list末尾,添加多个元素,且使用extend()方法
List.extend([8, '芒果', '文档'])
print("\n使用extend()方法添加多个元素后的list: ")
print(List)

输出:

初始化list:
[1, 2, 3, 4]
使用extend()方法添加多个元素后的list:
[1, 2, 3, 4, 8, '芒果', '文档']

从列表访问元素

为了访问列表项,请参考索引号。使用索引运算符[]访问列表中的项。索引必须为整数。嵌套列表通过嵌套索引访问。

# Python代码,展示如何从list当中获取元素
# 创建多个值得list
List = ["芒果", "文", "档"]
# 使用index索引,获取list中元素
print("从list中获取一个元素")
print(List[0])
print(List[2])
# 使用list嵌套,创建一个多维度list
List = [['芒果', '文'] , ['档']]
# 使用index索引,从多维度list中获取元素
print("从多维度list中获取元素")
print(List[0][1])
print(List[1][0])

输出:

从list中获取一个元素
芒果
档
从多维度list中获取元素
文
档

负索引

在Python中,负序索引表示从数组末尾开始的位置。不必像这样计算偏移量:List[len(List)-3],只需这样List[-3]就足够了。负索引表示从末尾开始,-1表示最后一个项目,-2表示倒数第二个项目,依此类推。

List = [1, 2, '芒果', 4, 'For', 6, '芒果']
# 使用负索引,访问list的元素
print("使用负索引,访问list的元素")
# 打印最后一个元素
print(List[-1])
# 打印倒数第三个元素
print(List[-3])

输出:

使用负索引,访问list的元素
芒果
For

从列表中删除元素

使用remove()方法

可以使用内置remove()函数从列表中删除元素,但是如果元素不存在于集合中,则会发生错误。Remove()方法一次只删除一个元素,要删除元素范围,则使用迭代器。remove()方法会删除指定的项目。
注:列表中的Remove方法将仅删除搜索到的元素的第一个匹配项。

# Python代码,展示使用remove删除元素
# 创建列表
List = [1, 2, 3, 4, 5, 6,
        7, 8, 9, 10, 11, 12]
print("列表初始化: ")
print(List)
# 使用Remove()方法删除元素
List.remove(5)
List.remove(6)
print("\n删除2个元素之后的list: ")
print(List)
# 使用迭代器删除list元素
for i in range(1, 5):
    List.remove(i)
print("\n删除一系列元素后的list: ")
print(List)

输出:

列表初始化:
[1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12]
删除2个元素之后的list:
[1, 2, 3, 4, 7, 8, 9, 10, 11, 12]
删除一系列元素后的list:
[7, 8, 9, 10, 11, 12]

使用pop()方法

Pop()函数也可以用于从list中删除元素并返回删除后的结果,但是默认情况下,它仅删除list中的最后一个元素,如果想从List的特定位置删除元素,该元素的索引需要作为参数传递给pop()即可

List = [1,2,3,4,5]
# 使用pop方法删除元素
List.pop()
print("\n用pop删除元素之后的list: ")
print(List)
# 使用pop在特定位置删除元素
List.pop(2)
print("\n使用pop在特定位置删除元素后的list: ")
print(List)

输出:

用pop删除元素之后的list:
[1, 2, 3, 4]
使用pop在特定位置删除元素后的list:
[1, 2, 4]

列表切片Slice

在Python List中,有多种方法可以打印包含所有元素的整个List,但是要打印特定范围的元素,我们可以使用Slice操作。在列表上使用冒号(:)执行切片操作。要从开始到结束的范围打印元素,请使用[:Index],要从最终位置开始计算索引,使用[:-Index]打印元素。要打印范围内的元素,请使用[开始索引:结束索引]。此外,要以相反的顺序打印整个列表,请使用[::-1]。
注:要从最后的元素开始打印列表元素,请使用负索引。

 

# Python代码,展示切片操作
# Creating a List
List = ['G','E','E','K','S','F',
        'O','R','G','E','E','K','S']
print("初始化list: ")
print(List)
# 使用切片打印list
Sliced_List = List[3:8]
print("\n在3-8范围内打印list: ")
print(Sliced_List)
# 从一个开始的index,打印至list末尾
Sliced_List = List[5:]
print("\n从第5个元素到最后一个元素的list: ")
print(Sliced_List)
# 使用切片,打印list中所有元素
Sliced_List = List[:]
print("\n使用切片,打印list中所有元素 : ")
print(Sliced_List)

输出:

初始化list:
['G', 'E', 'E', 'K', 'S', 'F', 'O', 'R', 'G', 'E', 'E', 'K', 'S']
在3-8范围内打印list:
['K', 'S', 'F', 'O', 'R']
从第5个元素到最后一个元素的list:
['F', 'O', 'R', 'G', 'E', 'E', 'K', 'S']
使用切片,打印list中所有元素 :
['G', 'E', 'E', 'K', 'S', 'F', 'O', 'R', 'G', 'E', 'E', 'K', 'S']

负索引列表切片

# 初始化list
List = ['G','E','E','K','S','F',
        'O','R','G','E','E','K','S']
print("初始化list: ")
print(List)
# 打印list,使用预定义的index
Sliced_List = List[:-6]
print("\n从list开头至倒数第6个元素的切片: ")
print(Sliced_List)
# 使用负索引进行切片
Sliced_List = List[-6:-1]
print("\n使用负索引进行切片并打印-6到-1的结果:")
print(Sliced_List)
# 反向打印一个list
Sliced_List = List[::-1]
print("\n反向打印一个list: ")
print(Sliced_List)

输出:

初始化list:
['G', 'E', 'E', 'K', 'S', 'F', 'O', 'R', 'G', 'E', 'E', 'K', 'S']
从list开头至倒数第6个元素的切片:
['G', 'E', 'E', 'K', 'S', 'F', 'O']
使用负索引进行切片并打印-6到-1的结果
['R', 'G', 'E', 'E', 'K']
反向打印一个list:
['S', 'K', 'E', 'E', 'G', 'R', 'O', 'F', 'S', 'K', 'E', 'E', 'G']

列表方法

函数 描述
Append() 将元素添加到列表的末尾
Extend() 将列表的所有元素添加到另一个列表
Insert() 在定义的索引处插入项目
Remove() 从列表中删除一个项目
Pop() 删除并返回给定索引处的元素
Clear() 从列表中删除所有项目
Index() 返回第一个匹配项的索引
Count() 返回作为参数传递的项目数
Sort() 以升序对列表中的项目进行排序
Reverse() 颠倒列表中项目的顺序
copy() 返回列表的副本

带列表的内置功能

函数 描述
reduce() 将在其参数中传递的特定函数应用于所有存储中间结果的列表元素,并且仅返回最终求和值
sum() 汇总列表中的数字
ord() 返回一个整数,该整数表示给定Unicode字符的Unicode代码点
cmp() 如果第一个列表“大于”第二个列表,则此函数返回1
max() 返回给定列表的最大元素
min() 返回给定列表的最小元素
all() 如果所有元素都为true或list为空,则返回true
any() 如果列表中的任何元素为true,则返回true。如果列表为空,则返回false
len() 返回列表的长度或列表的大小
enumerate() 返回列表的枚举对象
accumulate() 将在其参数中传递的特定函数应用于所有list元素,将返回包含中间结果的列表
filter() 测试列表中的每个元素是否正确
map() 在将给定函数应用于给定可迭代项的每一项之后,返回结果列表
lambda() 该函数可以具有任意数量的参数,但只能有一个表达式,该表达式将被求值并返回。