Python列表切片
在Python中,列表切片是一种常见的做法,它是程序员解决高效问题最常用的技术。考虑一个Python列表,为了访问列表中的一系列元素,您需要对列表进行切片。一种方法是使用简单的切片运算符,即冒号( :)
使用此运算符,您可以指定切片的起点、终点和步骤。列表切片从现有列表中返回一个新列表。
句法:
Lst[ Initial : End : IndexJump ]
如果Lst是一个列表,则上述表达式返回列表中从索引Initial到索引End的部分,步长为IndexJump 。
索引
1. 正指数
下面是一个简单的程序,使用切片显示整个列表。
Python3
# Initialize list
Lst = [50, 70, 30, 20, 90, 10, 50]
# Display list
print(Lst[::])
Python3
# Initialize list
Lst = [50, 70, 30, 20, 90, 10, 50]
# Display list
print(Lst[-7::1])
Python3
# Initialize list
Lst = [50, 70, 30, 20, 90, 10, 50]
# Display list
print(Lst[1:5])
Python3
# Initialize list
List = [1, 2, 3, 4, 5, 6, 7, 8, 9]
# Show original list
print("\nOriginal List:\n", List)
print("\nSliced Lists: ")
# Display sliced list
print(List[3:9:2])
# Display sliced list
print(List[::2])
# Display sliced list
print(List[::])
Python3
# Initialize list
List = ['Geeks', 4, 'geeks !']
# Show original list
print("\nOriginal List:\n", List)
print("\nSliced Lists: ")
# Display sliced list
print(List[::-1])
# Display sliced list
print(List[::-3])
# Display sliced list
print(List[:1:-2])
Python3
# Initialize list
List = [-999, 'G4G', 1706256, '^_^', 3.1496]
# Show original list
print("\nOriginal List:\n", List)
print("\nSliced Lists: ")
# Display sliced list
print(List[10::2])
# Display sliced list
print(List[1:1:1])
# Display sliced list
print(List[-1:-1:-1])
# Display sliced list
print(List[:0:])
Python3
# Initialize list
List = [-999, 'G4G', 1706256, 3.1496, '^_^']
# Show original list
print("\nOriginal List:\n", List)
print("\nSliced Lists: ")
# Modified List
List[2:4] = ['Geeks', 'for', 'Geeks', '!']
# Display sliced list
print(List)
# Modified List
List[:6] = []
# Display sliced list
print(List)
Python3
# Initialize list
List = [1, 2, 3, 4, 5, 6, 7, 8, 9]
# Show original list
print("\nOriginal List:\n", List)
print("\nSliced Lists: ")
# Creating new List
newList = List[:3]+List[7:]
# Display sliced list
print(newList)
# Changing existing List
List = List[::2]+List[1::2]
# Display sliced list
print(List)
输出:
[50, 70, 30, 20, 90, 10, 50]
上图说明了一个列表Lst及其索引值和元素。
2. 负指数
现在,让我们看看下图,它说明了一个列表及其负索引。
索引 -1 表示最后一个元素, -n表示列表的第一个元素(将n视为列表的长度)。列表也可以使用负索引进行操作。
蟒蛇3
# Initialize list
Lst = [50, 70, 30, 20, 90, 10, 50]
# Display list
print(Lst[-7::1])
输出:
[50, 70, 30, 20, 90, 10, 50]
上面的程序使用列表切片中的负索引显示整个列表。
3.切片
如前所述,列表切片是Python中的一种常见做法,可用于正索引和负索引。下图说明了列表切片的技术:
下面的程序将上图转换为Python代码:
蟒蛇3
# Initialize list
Lst = [50, 70, 30, 20, 90, 10, 50]
# Display list
print(Lst[1:5])
输出:
[70, 30, 20, 90]
下面是一些描述在Python中使用列表切片的示例:
示例 1:
蟒蛇3
# Initialize list
List = [1, 2, 3, 4, 5, 6, 7, 8, 9]
# Show original list
print("\nOriginal List:\n", List)
print("\nSliced Lists: ")
# Display sliced list
print(List[3:9:2])
# Display sliced list
print(List[::2])
# Display sliced list
print(List[::])
输出:
Original List:
[1, 2, 3, 4, 5, 6, 7, 8, 9]
Sliced Lists:
[4, 6, 8]
[1, 3, 5, 7, 9]
[1, 2, 3, 4, 5, 6, 7, 8, 9]
将Initial 、 End或IndexJump等任何参数留空将导致使用默认值,即 0 作为Initial ,列表长度作为End和 1 作为IndexJump 。
示例 2:
蟒蛇3
# Initialize list
List = ['Geeks', 4, 'geeks !']
# Show original list
print("\nOriginal List:\n", List)
print("\nSliced Lists: ")
# Display sliced list
print(List[::-1])
# Display sliced list
print(List[::-3])
# Display sliced list
print(List[:1:-2])
输出:
Original List:
['Geeks', 4, 'geeks !']
Sliced Lists:
['geeks !', 4, 'Geeks']
['geeks !']
['geeks !']
可以通过使用负整数作为IndexJump参数来生成反向列表。将Initial和End留空。如果IndexJump值为负,我们需要根据反向列表选择Initial和End值。
示例 3:
蟒蛇3
# Initialize list
List = [-999, 'G4G', 1706256, '^_^', 3.1496]
# Show original list
print("\nOriginal List:\n", List)
print("\nSliced Lists: ")
# Display sliced list
print(List[10::2])
# Display sliced list
print(List[1:1:1])
# Display sliced list
print(List[-1:-1:-1])
# Display sliced list
print(List[:0:])
输出:
Original List:
[-999, 'G4G', 1706256, '^_^', 3.1496]
Sliced Lists:
[]
[]
[]
[]
如果生成了一些没有意义或无法计算的切片表达式,则会生成空列表。
示例 4:
蟒蛇3
# Initialize list
List = [-999, 'G4G', 1706256, 3.1496, '^_^']
# Show original list
print("\nOriginal List:\n", List)
print("\nSliced Lists: ")
# Modified List
List[2:4] = ['Geeks', 'for', 'Geeks', '!']
# Display sliced list
print(List)
# Modified List
List[:6] = []
# Display sliced list
print(List)
输出:
Original List:
[-999, 'G4G', 1706256, 3.1496, '^_^']
Sliced Lists:
[-999, 'G4G', 'Geeks', 'for', 'Geeks', '!', '^_^']
['^_^']
列表切片可用于修改列表甚至从列表中删除元素。
示例 5:
蟒蛇3
# Initialize list
List = [1, 2, 3, 4, 5, 6, 7, 8, 9]
# Show original list
print("\nOriginal List:\n", List)
print("\nSliced Lists: ")
# Creating new List
newList = List[:3]+List[7:]
# Display sliced list
print(newList)
# Changing existing List
List = List[::2]+List[1::2]
# Display sliced list
print(List)
输出:
Original List:
[1, 2, 3, 4, 5, 6, 7, 8, 9]
Sliced Lists:
[1, 2, 3, 8, 9]
[1, 3, 5, 7, 9, 2, 4, 6, 8]
通过连接切片列表,可以创建新列表,甚至可以修改预先存在的列表。