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 等),我們可以更方便地使用這些方法來獲取偶數索引的元素。
資料結構
網路
關係資料庫管理系統
作業系統
Java
iOS
HTML
CSS
Android
Python
C 語言程式設計
C++
C#
MongoDB
MySQL
Javascript
PHP