📜  Python列表切片

📅  最后修改于: 2022-05-13 01:55:41.183000             🧑  作者: Mango

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]

InitialEndIndexJump等任何参数留空将导致使用默认值,即 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参数来生成反向列表InitialEnd留空如果IndexJump值为负,我们需要根据反向列表选择InitialEnd值。

示例 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]

通过连接切片列表,可以创建新列表,甚至可以修改预先存在的列表。