Python 列表

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(),该方法用于在列表末尾同时添加多个元素。

# 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]