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 中使用這些內建函式。
資料結構
網路
關係資料庫管理系統
作業系統
Java
iOS
HTML
CSS
Android
Python
C 程式設計
C++
C#
MongoDB
MySQL
Javascript
PHP