Python - 获取元组中偶数索引的元素


元组是 Python 中最重要的数据类型之一。它们主要用作数据结构,将顺序数据作为任何方法的参数传递。索引是指通过索引访问顺序数据中的元素。在本文中,我们将学习如何在元组的元素中获取偶数索引。

使用列表和 range 表达式。

可变列表是数据序列,用“,”分隔,并用“[ ]”括起来。Python 允许通过内置方法在列表和元组之间进行转换。我们可以遍历列表,并仅追加偶数索引处的元素。接下来,我们可以使用 Python 的 tuple 方法将列表转换为元组对象。请注意,此方法不会影响现有的元组对象,因此会创建一个新的元组对象。

示例

在下面的示例中,我们首先创建了一个名为 get_even_elements 的用户定义函数。该函数只接受一个参数,即一个元组。接下来,我们在函数中创建了一个空列表,并使用步长值为 2 迭代该列表。这确保了我们只获取偶数索引的元素。对于每次迭代,我们将元组元素追加到列表中。我们使用 tuple 方法将列表转换为元组,并返回结果。

def get_even_elements(t):
    even_elements = []
    for i in range(0, len(t), 2):
        even_elements.append(t[i])
    return tuple(even_elements)
t=(12,78,4,5,6,52,48,2,8,658,585)
print(f"The even indexed elements are: {get_even_elements(t)}")

输出

The even indexed elements are: (12, 4, 6, 48, 8, 585)

使用切片属性

切片是访问可迭代对象元素的一种更便捷的方式。它接受三个重要的参数:开始(包含)、结束(不包含)和步长。为了达到我们的目标,我们可以将步长设置为 2 以仅获取偶数索引的元素。如果我们不专门设置开始和结束,则会迭代所有元素。

语法

<iterable>[ <start index> : <stop index (exclusive)> : step ]

我们可以在任何可迭代对象中应用此语法。这里的起始索引是我们需要开始索引的索引。这将是包含的。停止索引是我们需要停止索引之前的索引。步长是我们希望每个元素之间的间隔。

示例

在下面的代码中,我们创建了 get_even_elements 函数,它将元组作为参数。接下来,它使用切片技术返回包含所有偶数索引元素的切片元组。之后我们打印了结果。

def get_even_elements(t):
    return t[::2]
t=(42,7,8,5,4,6,2,3,5,4,8)
print(f"The even indexed elements are: {get_even_elements(t)}")

输出

The even indexed elements are: (42, 8, 4, 2, 5, 8)

使用列表推导式

列表推导式是一种非常方便的方式,可以使用表达式、条件语句等在一行代码中创建列表元素。我们首先使用它将元组中所有偶数索引的元素追加到列表中。稍后,我们可以使用 tuple 方法将其转换为元组。

示例

在下面的代码中,我们创建了 get_even_elements 函数。它是一个空函数,并返回一个元组对象。我们使用列表推导式和 range 方法将所有偶数索引的元素追加到列表中。接下来,我们使用 tuple 方法将列表转换为元组。

def get_even_elements(t):
    return tuple([t[i] for i in range(0, len(t), 2)])
t=(45,2,4,7,5,35,89,56,12,74,2,45,774)
print(f"The even indexed elements are: {get_even_elements(t)}")

输出

The even indexed elements are: (45, 4, 5, 89, 12, 2, 774)

使用 Lambda 和 reduce 方法

Lambda 函数也称为匿名函数。使用此函数的优点是将单个表达式组合起来以创建小型任务。当我们需要执行一些小型函数但确定该函数不会在其他地方使用时,这尤其有用。

语法

lambda arguments: expression

Lambda 函数可以接受任意数量的参数,但只有一个表达式。它们通常与其他内置函数(如 map()、filter() 和 reduce())一起使用,以执行快速简单的操作。

reduce 方法是 Python 中 functool 模块的一部分。它接受函数名称和一个可迭代对象。它有助于将任何有效函数应用于可迭代对象的所有元素。它被逐对应用于可迭代对象的元素,直到获得单个值。

语法

reduce(function, iterable)

这里的函数表示我们需要应用于可迭代对象所有元素的函数的名称。可迭代对象可以是列表、元组等。

示例

在下面的代码中,我们首先从 functools 模块导入 reduce 方法。接下来,我们创建了 get_even_elements 函数。该函数将元组作为参数。我们使用 lambda 和 reduce 方法访问所有偶数索引的元素。我们创建了一个示例元组并调用了 get_even_elements 函数。我们使用 print 函数和字符串格式化打印结果。

from functools import reduce
def get_even_elements(t):
    return reduce(lambda acc, x: acc + (x,), t[::2], ())
t = (10, 20, 30, 40, 50)
even_elements = get_even_elements(t)
print(f"The even indexed elements are: {get_even_elements(t)}")

输出

The even indexed elements are: (10, 30, 50)

使用 Filter、Map 和 Lambda 函数

map 方法是另一个强大的工具,可以将任何函数应用于所有数据元素。它允许您创建一个新的可迭代对象,其中包含将函数应用于原始可迭代对象中每个元素的结果。

示例

在下面的代码中,我们首先创建了 get_even_elements 函数,该函数将元组对象作为参数。接下来,我们使用 filter 方法过滤出元组对象中所有偶数索引的元素。我们使用 map 方法将所有元素映射到 filter 方法。接下来,我们使用 tuple 方法将列表转换为元组对象。

def get_even_elements(t):
    return tuple(map(lambda i: t[i], filter(lambda i: i % 2 == 0, range(len(t)))))
t = (10, 20, 30, 40, 50)
even_elements = get_even_elements(t)
print(f"The even indexed elements are: {get_even_elements(t)}")

输出

The even indexed elements are: (10, 30, 50)

结论

在本文中,我们讨论了可以在 Python 中获取偶数索引元素的各种技术。Python 允许使用多种方法来实现相同的功能。我们可以使用索引方法和列表来获取偶数索引的元素。但是,Python 提供了其他方法(如 filter、map、reduce 等),我们可以更方便地使用这些方法来获取偶数索引的元素。

更新于: 2023-07-18

234 次查看

启动您的 职业生涯

通过完成课程获得认证

开始
广告

© . All rights reserved.