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.