Python - 元組列表中第 K 個索引的平均值


在 Python 中查詢第 K 個索引的元組列表是一個重要的程式設計概念。問題陳述是,我們需要找到元組元素中所有位於第 K 個索引處的元素的平均值。這些元組將聚合到列表資料型別中。在本文中,我們將採用不同的方法,例如使用 while 迴圈、列表推導式以及 Pandas、NumPy、Statistics 等庫。

理解問題陳述

我們的輸入應該包含一個元組列表和 K 的值。

list:  [(1, 2, 3), (4, 5, 6), (7, 8, 9)]
k: 1

我們需要找到第 K 個元素的平均值(平均數)。我們將把 K 視為索引。因此,K=1 處的元素是

(4, 5, 6)

數字的平均值:(4+5+6)/3=15/3=5。

Output: 5

使用迴圈

迴圈是 Python 中一個重要的語句。迴圈語句允許我們迭代可迭代物件。我們可以採用以下方法來查詢第 K 個索引元組列表的平均值

  • 首先,初始化一個變數,例如“sum”和“count”。

  • 遍歷元組元素。

  • 使用元組的索引屬性訪問第 K 個元素並將其新增到 sum 中。

  • 在每次迭代中將“count”的值遞增 1。

  • “sum/count”給出所需答案。

示例

在下面的示例中,我們使用 kth_index_tuple_list_mean 來查詢第 K 個索引元組列表。我們初始化了兩個名為“total”和“count”的變數。接下來,我們遍歷列表,在每次迭代中,我們使用索引屬性來訪問第 K 個元素。我們將第 K 個元素不斷新增到初始化的變數“total”中。對於每次迭代,我們將 count 的值遞增 1。最後,我們返回“total/count”。

def kth_index_tuple_list_mean(tuples_list, k):
    total = 0
    count = 0
    for tuple_item in tuples_list:
        if len(tuple_item) > k:
            total += tuple_item[k]
            count += 1
    if count > 0:
        return total / count
    else:
        return None
tuples_list = [(1, 2, 3), (4, 5, 6), (7, 8, 9)]
k = 1
result = kth_index_tuple_list_mean(tuples_list, k)
print(f"The mean of the kth elements of the tuples of the list is: {result}") 

輸出

The mean of the kth elements of the tuples of the list is: 5.0

使用列表推導式

列表推導式是 Python 中一種流行的方法,用於生成列表的元素。列表推導式允許開發人員將多個語句、條件等組合到單個語句中,並根據該語句生成列表元素。使用此技術的好處是它使程式碼更簡潔緊湊。

示例

在以下程式碼中,我們使用了列表推導式方法。我們只獲取了列表中每個元組的長度大於“k”的那些元組。接下來,我們再次使用列表推導式方法和 sum 方法來查詢有效元素的總和。我們將結果除以有效元素的長度。

def kth_index_tuple_list_mean(tuples_list, k):
    valid_tuples = [tuple_item for tuple_item in tuples_list if len(tuple_item) > k]
    if valid_tuples:
        return sum(tuple_item[k] for tuple_item in valid_tuples) / len(valid_tuples)
    else:
        return None
tuples_list = [(8, 2, 7), (9, 5, 3), (7, 3, 9), (7,8,5)]
k = 2
result = kth_index_tuple_list_mean(tuples_list, k)
print(f"The mean of the kth elements of the tuples of the list is: {result}") 

輸出

The mean of the kth elements of the tuples of the list is: 6.0

使用 NumPy 陣列

NumPy 是一個流行的 Python 庫,用於數值計算。它引入了陣列,這是一種專門的資料結構,只能儲存同構資料型別。NumPy 提供了用於陣列操作、數學運算、統計等的高效函式和方法。它提供了最佳化的演算法、可擴充套件性和與 Pandas 和 Matplotlib 等其他庫的整合。NumPy 對於涉及數值資料和 Python 中科學計算的任務至關重要。

示例

在以下程式碼中,我們使用了 NumPy 陣列。首先,我們將 NumPy 庫匯入到我們的程式碼中。接下來,我們建立了函式 kth_index_tuple_list_mean,它接收列表和值“k”。我們使用列表推導式將元組的第 K 個元素追加到列表中,並使用 NumPy 的“array”方法將其轉換為陣列。接下來,如果生成的陣列的大小非零,我們就返回平均值。

import numpy as np

def kth_index_tuple_list_mean(tuples_list, k):
    array = np.array([tuple_item[k] for tuple_item in tuples_list if len(tuple_item) > k])
    if array.size > 0:
        return np.mean(array)
    else:
        return None

tuples_list = [(8, 2, 7), (9, 5, 3), (7, 3, 9), (7,8,5)]
k = 0
result = kth_index_tuple_list_mean(tuples_list, k)
print(f"The mean of the kth elements of the tuples of the list is: {result}") 

輸出

The mean of the kth elements of the tuples of the list is: 7.75

使用 Pandas 庫

Pandas 是一個流行的 Python 庫,用於資料操作、清理和分析。在機器學習或深度學習之前,我們在 Python 中大量使用該庫進行資料分析。Pandas 處理資料框,這是一種具有行和列的特殊資料結構。Pandas 提供了一些內建的方法和函式,我們可以使用它們來執行許多工。

示例

在下面的示例中,我們首先匯入了 pandas 庫。接下來,我們建立了函式 kth_index_tuple_list_mean。在函式中,我們首先將列表轉換為資料框。我們使用了 dropna 方法來刪除除第 K 個元素之外的其他值。接下來,我們使用 mean 列表方法來查詢有效值的平均值。

import pandas as pd

def kth_index_tuple_list_mean(tuples_list, k):
    df = pd.DataFrame(tuples_list)
    valid_tuples = df[df.columns[k]].dropna()
    if not valid_tuples.empty:
        return valid_tuples.mean()
    else:
        return None


tuples_list = [(7, 2, 7), (9, 5, 3), (7, 3, 9), (7,8,5)]
k = 0
result = kth_index_tuple_list_mean(tuples_list, k)
print(f"The mean of the kth elements of the tuples of the list is: {result}") 

輸出

The mean of the kth elements of the tuples of the list is: 7.5

使用列表推導式和 Statistics 庫

Python 中的 Statistics 庫是執行統計分析和計算的強大工具。它提供了一系列用於處理資料和提取有用見解的函式和方法。該庫對於處理集中趨勢(如平均值、中位數、眾數、標準差、方差等)非常有用。

示例

在以下程式碼中,我們結合了列表推導式和 statistics 庫來查詢第 K 個索引元組列表的平均值。我們使用列表推導式將元組的第 K 個元素追加到列表“valid_values”中,其中元組的長度大於 k。接下來,我們使用 Python 的“mean”方法來查詢數字的平均值。

import statistics

def kth_index_tuple_list_mean(tuples_list, k):
    valid_values = [tuple_item[k] for tuple_item in tuples_list if len(tuple_item) > k]
    if valid_values:
        return statistics.mean(valid_values)
    else:
        return None


tuples_list = [(7, 2, 7), (9, 5, 3), (7, 3, 9), (7,8,5)]
k = 0
result = kth_index_tuple_list_mean(tuples_list, k)
print(f"The mean of the kth elements of the tuples of the list is: {result}") 

輸出

The mean of the kth elements of the tuples of the list is: 7.5

結論

本文教我們如何處理 Python 中的第 K 個索引元組列表的平均值。Python 是一種通用的程式語言,它為我們提供了各種庫和包來處理它。我們使用了迴圈語句來執行此操作。接下來,我們還了解了其他方法(如列表推導式、Pandas、NumPy 等)如何提供更便捷的方式來執行此操作。

更新於:2023年7月18日

133 次檢視

啟動你的 職業生涯

透過完成課程獲得認證

開始
廣告

© . All rights reserved.