Python - 列表切片


在这篇文章中,我们将学习变量列表切片。如你所知,列表切片是 Python 中非常有用且强大的功能,我们可以使用它快速切出任何列表的一些特定部分。Python 为我们提供了各种技术和方法来根据一些特定标准或模式进行切片和提取元素。

举个例子来理解一下 -

list number: [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 33, 34, 56, 43, 67]

我们有一些随机数字的列表,假设我们想从列表中从索引 8 切片到列表的末尾,那么输出将如下所示 -

Sliced list number: [9, 10, 33, 34, 56, 43, 67]

让我们看看可以使用哪些不同的方法来执行此任务。

方法 1:基本切片技术

在基本的列表切片技术中,我们使用简单的 Python 语法,即 list[start:end:step]。这可以从起始索引到结束索引提取任何列表的某些部分,并带有任何给定的步长值(可选)。这是一个示例

示例

num = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 33, 34, 56, 43, 67]
sliced_number = num[2:15:2]

print("Original list number: ", num)
print("Sliced list number : ", sliced_number)  

输出

Original list number: [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 33, 34, 56, 43, 67]
Sliced list number : [3, 5, 7, 9, 33, 56, 67]

解释

在上面的示例中,我们从索引 2 切片到索引 15(不包括),并以 2 为步长移动。

方法 2:使用列表推导式

在这里,我们将使用列表推导式技术,并且在切片列表时也将指定一些条件。让我们用一个例子来看看。

示例

number = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 33, 34, 56, 43, 67]
sliced_number = [num for num in number[2:9] if num % 2 == 0]

print("Original list number: ", number)
print("Sliced list number : ", sliced_number)

输出

Original list number: [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 33, 34, 56, 43, 67] 
Sliced list number : [4, 6, 8]

解释

在上面的示例中,我们使用列表推导式技术从索引 2 到 9 切片列表。我们有一个名为 number 的列表。我们使用 num%2==0 作为条件,它将过滤可以被元素 2 整除的值。所以我们的最终输出将是 [4, 6, 8],因为它的元素可以被 2 整除。

方法 3:从开头切片

在这种方法中,我们将从开头切片列表,而无需指定起始索引,我们也可以省略起始值。

示例

num = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 33, 34, 56, 43, 67]
sliced_number = num[:6]

print("Original list number: ", num)
print("Sliced list number : ", sliced_number)

输出

Original list number: [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 33, 34, 56, 43, 67]
Sliced list number : [3, 5, 7, 9, 33, 56, 67]

解释

在上面的示例中,我们指定数字为 6,因此它将从开头到索引 6(包括)切片列表。如果将数字指定为 4,则它将从开头切片前 4 个元素。

方法 4:切片到末尾

在这种方法中,我们将从列表中的任何点切片到列表的末尾,而无需指定结束索引。

示例

num = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 33, 34, 56, 43, 67]
sliced_number = num[8:]

print("Original list number: ", num)
print("Sliced list number : ", sliced_number)

输出

Original list number: [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 33, 34, 56, 43, 67]
Sliced list number : [9, 10, 33, 34, 56, 43, 67]

解释

在上面的示例中,我们从索引 8 开始切片列表,一直到末尾。因此,我们得到列表的最后 7 个数字作为输出。如果我们指定数字为 4,那么我们将得到列表的最后 3 个数字。

方法 5:跳过元素

在这种方法中,我们将看到如何通过指定步长值来跳过列表中的元素,使用切片可以跳过列表中的元素。

示例

num = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 33, 34, 56, 43, 67]
skipped_number_list = num[::2]

print("Original list number: ", num)
print("Skipped number list : ", skipped_number_list)

输出

Original list number: [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 33, 34, 56, 43, 67] 
Skipped number list : [1, 3, 5, 7, 9, 33, 56, 67]

解释

在上面的示例中,我们以 2 为步长切片列表,从列表中提取每个第二个元素。如果我们指定步长为 3,则它将跳过每个 2 个元素打印元素。

方法 6:负索引

在这种方法中,我们将使用负索引来切片变量列表。我们使用负索引从列表的末尾开始计数。

示例

num = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 33, 34, 56, 43, 67]
sliced_number = num[-8:-2]

print("Original list number: ", num)
print("Sliced list number : ", sliced_number)  

输出

Original list number: [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 33, 34, 56, 43, 67] 
Sliced list number : [8, 9, 10, 33, 34, 56]

解释

在上面的示例中,我们使用负索引来切片列表。我们指定索引为 -8,它是从末尾开始的第 8 个索引,到 -2,它是从末尾开始的第 2 个索引。因此,列表将从末尾的第 8 个元素到第 2 个元素进行切片。如果我们指定索引为 -5 到 -1,则列表将是 [33, 34, 56, 43]。

结论

因此,列表切片是我们日常编程中非常重要的任务。在这篇文章中,我们看到了不同的方法,例如从开头切片、列表推导式、从末尾切片、跳过元素,它们为我们提供了不同的技术来切片列表。您可以根据需要使用其中任何一个。但是,了解不同的技术对于学习目的至关重要。

更新于: 2023年10月6日

400 次查看

开启您的 职业生涯

通过完成课程获得认证

立即开始
广告

© . All rights reserved.