Python - 列表中的最小乘積對


在給定的問題陳述中,我們必須在給定的列表和元組列表中找到最小乘積對。因此,我們將使用 Python 來實現程式碼。

理解問題

眼前的問題是從給定的列表中找到最小乘積並用 Python 建立一個程式。或者我們可以說,我們必須找到一對數字,其乘積與列表中其他對相比最小。解決此問題的方法有很多。因此,我們將使用列表和元組列表來展示此問題陳述。讓我們藉助一個示例來了解此問題 -

假設我們有一個列表,例如 [1, 4, 3, 5, 1, 2, 8, 9],在這個列表中,我們可以看到有很多可能的對,但我們必須找到乘積最小的對並將其顯示為輸出。在此示例中,存在 (1,1) 對,其中這兩個專案的乘積為 1,這在所有可能的組合中都最小。

使用元組列表或元組列表

元組列表或元組列表是 Python 程式語言中的資料結構。元組列表包含多個元組作為其專案。這意味著列表中的每個元素都是一個元組。

為了理解此程式的邏輯,我們將使用 Python 的“min”函式從給定數字中獲取最小值。然後,我們將使用 abs 函式給出數字的絕對值。在 abs 函式內部,我們將計算數字 a 和 b 的乘積。並將結果儲存在單獨的變數中。

演算法

  • 步驟 1 - 因為我們必須在給定的元組列表中找到最小乘積對,所以首先我們將建立一個名為 list_min_val 的函式,並在該函式內部,我們將傳遞一個名為 numbers 的引數,該引數是元組型別列表。

  • 步驟 2 - 定義函式後,我們將使用一個變數來儲存對的最小乘積,並將其命名為 min_result。並透過使用 min 和 ans 函式計算乘積和該乘積的最小值來初始化其值。

  • 步驟 3 - 現在,我們將返回 min_result 作為結果。然後,我們將定義列表元組作為輸入並列印結果的值。

示例

#Function to find the minimum,  product in the given list  
def list_min_val(numbers):
   min_result = min([abs(a * b) for a, b in numbers] )
   return min_result
numbers = [(1, 6), (2, 4), (3, 8), (5, 1)]  
print("\nMinimum product from the pairs of the given tuple list:")
print(list_min_val(numbers))

輸出

Minimum product from the pairs of the given tuple list:
5

複雜度

在給定列表中查詢最小乘積所需的時間為 O(n),其中 n 是給定元組列表的大小。因為程式碼僅對 numbers 進行一次迭代以計算數字的乘積。

使用列表

在這種方法中,我們將使用 Python 的列表資料結構。我們將使用 itertools 建立用於迴圈目的的迭代器。

演算法

  • 步驟 1 - 因為我們正在使用 python 的 itertools 模組,所以首先我們將將其匯入為 itts。此模組將幫助我們建立用於迴圈目的的迭代器。

  • 步驟 2 - 匯入 itertools 後,我們將建立一個名為 list_min_pair 的函式,並在函式內部,我們將傳遞名為 numbers 的列表。

  • 步驟 3 - 在上述函式內部,我們將使用一個變數來儲存最小乘積結果。並使用 min、lambda 函式和 itts.combinations 初始化其值。藉助 lambda 函式,我們將計算兩個數字的乘積。“itts.combinations”函式將用於查詢乘積最小值的數字組合。

  • 步驟 4 - 現在,我們將定義一個 numbers 列表並在控制檯上列印具有最小乘積的輸出。

示例

# Import itertools to create iterators for efficient looping
import itertools as itts

# Function to get the minimum product pair
def list_min_pair(numbers):
   min_result = min(itts.combinations(numbers, 2), key = lambda sub: sub[0] * sub[1])
   return min_result

numbers = [2, 4, 3, 1, 5, 6, 7, 8, 9, 10]  
print("\nThe actual list:")
print((numbers))
print("\nPair of minimum product from the given input list:")
print(list_min_pair(numbers))

輸出

The actual list:
[2, 4, 3, 1, 5, 6, 7, 8, 9, 10]

Pair of minimum product from the given input list:
(2, 1)

複雜度

使用 python 中的列表獲取最小乘積對的時間複雜度為 (n^2),其中 n 是給定輸入列表的大小。造成這種複雜度的原因是,我們正在對列表的元素進行組合,因此為了進行這些組合,我們需要 n^2 時間。因此,最終的時間複雜度為 O(n^2)。

結論

因此,我們已經看到了在給定列表中查詢最小乘積對的不同方法。我們已經看到了 itertools 模組、min 函式、lambda 函式以及 abs 函式的使用。因此,藉助這些程式碼,我們可以學習如何在 Python 中使用這些內建函式。

更新於: 2023年10月16日

80 次瀏覽

開啟您的 職業生涯

透過完成課程獲得認證

開始學習
廣告
© . All rights reserved.