Python 列表就像在其他语言中声明的动态大小的数组(C++ 中的向量和 Java 中的 ArrayList)。用简单的语言来说,列表是事物的集合,用 [ ] 括起来并用逗号分隔。
在 Python 中创建列表
Python 中的列表只需将序列放在方括号 [] 内即可创建。与Sets不同,列表不需要内置函数来创建。
示例 1:在 Python 中创建列表
# Python程序演示
# 创建列表
# 创建一个空列表
List = []
print("空列表:")
print(List)
# 创建一个包含数字的列表
List = [10, 20, 14]
print("\n数字列表:")
print(List)
# 创建一个包含字符串的列表并访问
# 使用索引
List = ["Jkhxw", "For", "Geeks"]
print("\n列表项:")
print(List[0])
print(List[2])
输出:
空列表:
[]
数字列表:
[10, 20, 14]
列表项:
Jkhxw
Geeks
示例 2:创建包含多个不同或重复元素的列表
列表可能包含具有不同位置的重复值,因此,可以在创建列表时将多个不同或重复的值作为序列传递。
# 创建一个包含数字的列表
# (包含重复的值)
List = [1, 2, 4, 4, 3, 3, 3, 6, 5]
print("\n使用数字创建的列表:")
print(List)
# 创建一个包含混合类型值的列表
# (包含数字和字符串)
List = [1, 2, 'Jkhxw', 4, 'For', 6, 'Jkhxw']
print("\n使用混合值创建的列表:")
print(List)
输出:
使用数字创建的列表:
[1, 2, 4, 4, 3, 3, 3, 6, 5]
使用混合值创建的列表:
[1, 2, 'Jkhxw', 4, 'For', 6, 'Jkhxw']
访问列表中的元素
使用索引运算符 [ ] 访问列表中的项目。索引必须是整数。使用嵌套索引访问嵌套列表。
示例 1:访问列表中的元素
# Python程序演示
# 从列表中访问元素
# 创建一个包含多个值的列表
List = ["Jkhxw", "For", "Geeks"]
# 使用索引号从列表中访问元素
print("从列表中访问元素")
print(List[0])
print(List[2])
这个程序演示了如何使用索引号从列表中访问元素,并打印出了列表中的元素。
输出:
从列表中访问元素
Jkhxw
Geeks
示例 2:访问多维列表中的元素
这个程序演示了如何使用索引号从多维列表中访问元素,并打印出了所访问的元素。在这个例子中,我们有一个包含两个子列表的多维列表,并且通过索引号访问了这些子列表中的元素。
# Python程序演示
# 访问多维列表中的元素
List = [['Jkhxw', 'For'], ['Geeks']]
# 使用索引号从多维列表中访问元素
print("从多维列表中访问元素")
print(List[0][1])
print(List[1][0])
输出:
从多维列表中访问元素
For
Geeks
负索引
在Python中,负序列索引表示从数组末尾开始的位置。不必像 List[len(List)-3] 中那样计算偏移量,只需编写 List[-3] 就足够了。负索引表示从末尾开始,-1 指最后一项,-2 指倒数第二项,依此类推。
# Python程序演示
# 使用负索引访问列表元素
List = [1, 2, 'Jkhxw', 4, 'For', 6, 'Geeks']
# 使用负索引打印列表的最后一个元素
print("使用负索引访问列表的最后一个元素")
print(List[-1])
# 使用负索引打印列表的倒数第三个元素
print("使用负索引访问列表的倒数第三个元素")
print(List[-3])
输出:
使用负索引访问列表的最后一个元素
Geeks
使用负索引访问列表的倒数第三个元素
For
上面这个程序演示了如何使用负索引号来访问列表中的元素。负索引从列表的末尾开始计数,-1 表示最后一个元素,-2 表示倒数第二个元素,依此类推。在这个示例中,我们使用负索引来访问列表的最后一个元素和倒数第三个元素。
获取Python列表的大小
Python len()用于获取列表的长度。
# Creating a List
List1 = []
print(len(List1))
# Creating a List of numbers
List2 = [10, 20, 14]
print(len(List2))
输出:
0
3
获取 Python 列表的输入
我们可以将元素列表的输入作为字符串、整数、浮点数等。但默认的是字符串。
示例1:
这个程序会要求用户输入以空格分隔的字符串,然后使用split()方法将字符串拆分为单词,并将这些单词存储在一个列表中。最后,它会打印出列表的内容。
# Python程序,接受以空格分隔的输入字符串,
# 将其拆分并存储到一个列表中,然后打印该字符串列表
# 输入以空格分隔的字符串
string = input("输入元素(以空格分隔):")
# 拆分字符串并将其存储到一个列表中
lst = string.split()
print('列表内容为:', lst) # 打印列表内容
输出:
输入元素:JKHXW FOR GEEKS
列表内容为:['JKHXW', 'FOR', 'GEEKS']
示例2:
这个程序首先要求用户输入列表的大小(元素数量),然后接受以空格分隔的整数元素,并将它们存储在一个列表中。最后,它会打印出列表的内容。
# Python程序,接受用户输入列表的大小,然后接受以空格分隔的整数元素,
# 并将这些元素存储在一个列表中,最后打印该列表
# 输入列表的大小
n = int(input("输入列表的大小:"))
# 通过map、split和strip函数将整数存储在一个列表中
lst = list(map(int, input("输入整数元素:").strip().split()))[:n]
# 打印列表
print('列表内容为:', lst)
输出:
输入列表的大小:4
输入整数元素:6 3 9 10
列表内容为:[6, 3, 9, 10]
将元素添加到 Python 列表
方法一:使用append()方法
可以使用内置的append()函数将元素添加到列表中。使用append()方法一次只能将一个元素添加到列表中,对于使用append()方法添加多个元素,需要使用循环。还可以使用append 方法将元组添加到列表中,因为元组是不可变的。与集合不同,列表也可以使用append()方法添加到现有列表中。
# Python程序演示
# 向列表中添加元素
# 创建一个空列表
List = []
print("初始空列表:")
print(List)
# 向列表中添加元素
List.append(1)
List.append(2)
List.append(4)
print("\n添加三个元素后的列表:")
print(List)
# 使用迭代器添加元素到列表
for i in range(1, 4):
List.append(i)
print("\n添加1到3的元素后的列表:")
print(List)
# 向列表中添加元组
List.append((5, 6))
print("\n添加元组后的列表:")
print(List)
# 向列表中添加另一个列表
List2 = ['For', 'Geeks']
List.append(List2)
print("\n添加另一个列表后的列表:")
print(List)
输出:
初始空列表:
[]
添加三个元素后的列表:
[1, 2, 4]
添加1到3的元素后的列表:
[1, 2, 4, 1, 2, 3]
添加元组后的列表:
[1, 2, 4, 1, 2, 3, (5, 6)]
添加另一个列表后的列表:
[1, 2, 4, 1, 2, 3, (5, 6), ['For', 'Geeks']]
方法2:使用insert()方法
append() 方法仅适用于在 List 末尾添加元素,要在所需位置添加元素,请使用insert()方法。与只接受一个参数的append()不同,insert()方法需要两个参数(position, value)。
这个程序演示了如何使用insert()方法在列表中的特定位置插入元素。在这个示例中,我们在索引3处插入了整数12,并在索引0处插入了字符串’Geeks’,然后打印了更新后的列表。插入操作会改变列表的结构,将新元素插入到指定位置。
# Python程序演示
# 在列表中特定位置插入元素
# 创建一个列表
List = [1, 2, 3, 4]
print("初始列表:")
print(List)
# 在特定位置插入元素
# (使用Insert方法)
List.insert(3, 12)
List.insert(0, 'Geeks')
print("\n执行插入操作后的列表:")
print(List)
输出:
初始列表:
[1, 2, 3, 4]
执行插入操作后的列表:
['Geeks', 1, 2, 3, 12, 4]
方法3:使用extend()方法
除了append()和insert()方法之外,还有一种添加元素的方法,extend(),该方法用于在列表末尾同时添加多个元素。
注意:append()和extend()方法只能在末尾添加元素。
# Python程序演示
# 在列表末尾添加多个元素
# 创建一个列表
List = [1, 2, 3, 4]
print("初始列表:")
print(List)
# 在列表末尾添加多个元素
# (使用Extend方法)
List.extend([8, 'Geeks', 'Always'])
print("\n执行扩展操作后的列表:")
print(List)
输出:
初始列表:
[1, 2, 3, 4]
执行扩展操作后的列表:
[1, 2, 3, 4, 8, 'Geeks', 'Always']
反转列表
方法一:使用Python中的reverse()方法可以反转列表。
# Reversing a list
mylist = [1, 2, 3, 4, 5, 'Geek', 'Python']
mylist.reverse()
print(mylist)
输出:
['Python', 'Geek', 5, 4, 3, 2, 1]
方法2:使用reverse()函数:
returned() 函数返回一个反向迭代器,可以使用 list() 函数将其转换为列表。
my_list = [1, 2, 3, 4, 5]
reversed_list = list(reversed(my_list))
print(reversed_list)
输出:
[5,4,3,2,1]
从列表中删除元素
方法一:使用remove()方法
可以使用内置的remove()函数从列表中删除元素,但如果列表中不存在该元素,则会出现错误。Remove() 方法一次只能删除一个元素,要删除一系列元素,需要使用迭代器。remove() 方法删除指定的项目。
注意: List中的Remove方法只会删除第一个出现的搜索元素。
示例1:
这个程序演示了如何使用remove()方法从列表中移除元素。在这个示例中,我们移除了元素5和元素6,然后打印了更新后的列表。remove()方法会查找列表中的第一个匹配项并将其移除。如果有多个相同的元素,只会移除第一个。
# Python程序演示
# 从列表中移除元素
# 创建一个列表
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移除两个元素后的列表:")
print(List)
输出:
初始列表:
[1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12]
移除两个元素后的列表:
[1, 2, 3, 4, 7, 8, 9, 10, 11, 12]
示例2:
在这个程序中,我们使用remove()方法和一个循环来移除指定范围内的元素。在这个示例中,我们移除了从1到4的元素,然后打印了更新后的列表。循环从1到4遍历,对每个元素都调用remove()方法来移除它们。
# Python程序演示
# 使用迭代器方法从列表中移除元素
# 创建一个列表
List = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12]
print("初始列表:")
print(List)
# 使用迭代器方法从列表中移除元素
for i in range(1, 5):
List.remove(i)
print("\n移除一定范围的元素后的列表:")
print(List)
输出:
初始列表:
[1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12]
移除一定范围的元素后的列表:
[5, 6, 7, 8, 9, 10, 11, 12]
方法2:使用pop()方法
pop() 函数也可用于从列表中删除并返回一个元素,但默认情况下它仅删除列表的最后一个元素,要从列表的特定位置删除元素,需要传递该元素的索引作为 pop() 方法的参数。
# Python程序演示
# 使用pop()方法从列表中移除元素
List = [1, 2, 3, 4, 5]
# 使用pop()方法移除列表的最后一个元素
List.pop()
print("\n移除一个元素后的列表:")
print(List)
# 使用pop()方法移除列表中特定位置的元素
List.pop(2)
print("\n移除特定元素后的列表:")
print(List)
输出:
移除一个元素后的列表:
[1, 2, 3, 4]
移除特定元素后的列表:
[1, 2, 4]
列表切片
我们可以使用切片获取子字符串和子列表。在Python列表中,有多种方法可以打印包含所有元素的整个列表,但是要从列表中打印特定范围的元素,我们使用切片操作。
使用冒号(:) 对列表执行切片操作。
要打印从开始到范围的元素,请使用:
[: Index]
要以相反的顺序打印整个列表,请使用:
[::-1]
要打印从特定索引到最终使用的元素:
[Index:]
要打印最终使用的元素:
[:-Index]
下面这个程序演示了如何使用切片操作从列表中获取元素。切片操作允许您指定一个范围,并获取列表中特定范围的元素。在这个示例中,我们分别使用不同的切片操作来获取不同范围的元素,并打印它们。
# Python程序演示
# 从列表中获取元素
# 创建一个列表
List = ['J', 'K', 'H', 'X', 'W', 'F', 'O', 'R', 'G', 'E', 'E', 'K', 'S']
print("初始列表:")
print(List)
# 使用切片操作打印特定范围的元素
Sliced_List = List[3:8]
print("\n切片获取范围为3-8的元素:")
print(Sliced_List)
# 使用切片操作打印从预定义点到列表末尾的元素
Sliced_List = List[5:]
print("\n从第5个元素开始切片获取到列表末尾的元素:")
print(Sliced_List)
# 使用切片操作打印列表的所有元素
Sliced_List = List[:]
print("\n使用切片操作打印所有元素:")
print(Sliced_List)
输出:
初始列表:
['J', 'K', 'H', 'X', 'W', 'F', 'O', 'R', 'G', 'E', 'E', 'K', 'S']
切片获取范围为3-8的元素:
['X', 'W', 'F', 'O', 'R']
从第5个元素开始切片获取到列表末尾的元素:
['F', 'O', 'R', 'G', 'E', 'E', 'K', 'S']
使用切片操作打印所有元素:
['J', 'K', 'H', 'X', 'W', 'F', 'O', 'R', 'G', 'E', 'E', 'K', 'S']
负索引列表切片
这个程序演示了如何使用负数索引和切片操作来获取列表中的元素。通过使用负数索引,您可以从列表的末尾开始计数。在这个示例中,我们使用不同的负数索引和切片操作来获取不同范围的元素,并打印它们。最后一个切片操作将列表中的元素以相反的顺序打印出来。
# Python程序演示
# 使用负数索引和切片操作获取列表元素
# 创建一个列表
List = ['J', 'K', 'H', 'X', 'W', 'F', 'O', 'R', 'G', 'E', 'E', 'K', 'S']
print("初始列表:")
print(List)
# 使用切片操作从开头获取元素直到倒数第6个元素
Sliced_List = List[:-6]
print("\n切片获取到倒数第6个元素:")
print(Sliced_List)
# 使用负数索引的切片操作获取特定范围的元素
Sliced_List = List[-6:-1]
print("\n使用负数索引的切片操作获取索引-6到-1的元素")
print(Sliced_List)
# 使用切片操作以相反顺序打印元素
Sliced_List = List[::-1]
print("\n以相反顺序打印列表的元素:")
print(Sliced_List)
输出:
初始列表:
['J', 'K', 'H', 'X', 'W', 'F', 'O', 'R', 'G', 'E', 'E', 'K', 'S']
切片获取到倒数第6个元素:
['J', 'K', 'H', 'X', 'W', 'F', 'O']
使用负数索引的切片操作获取索引-6到-1的元素
['R', 'G', 'E', 'E', 'K']
以相反顺序打印列表的元素:
['S', 'K', 'E', 'E', 'G', 'R', 'O', 'F', 'W', 'X', 'H', 'K', 'J']
列表推导式
Python 列表推导式用于从其他可迭代对象(如元组、字符串、数组、列表等)创建新列表。列表推导式由包含表达式的括号组成,该表达式与 for 循环一起对每个元素执行以迭代每个元素。
语法:
newList = [ expression(element) for element in oldList if condition ]
# Python程序演示
# Python中的列表推导
# 下面的列表包含了从1到10范围内所有奇数的平方
odd_square = [x ** 2 for x in range(1, 11) if x % 2 == 1]
print(odd_square)
输出:
[1, 9, 25, 49, 81]
为了更好的理解,上面的代码类似如下:
# for understanding, above generation is same as,
odd_square = []
for x in range(1, 11):
if x % 2 == 1:
odd_square.append(x**2)
print(odd_square)
输出:
[1、9、25、49、81]