Python - 乘以子列表中每個元素與其索引


在 Python 中,有多種方法可以將子列表中的每個元素乘以其索引。此任務涉及遍歷子列表,訪問元素及其對應的索引,並執行乘法運算。實現此目標的兩種常見方法是使用 for 迴圈、利用列表推導式以及使用 NumPy 庫。每種方法都提供了它自己在程式碼簡潔性、效率和清晰度方面的優勢。在本文中,我們將詳細探討這兩種方法,提供分步演算法和 Python 程式碼示例。到最後,您將清楚地瞭解如何在 Python 中將子列表元素乘以其索引。 

乘以子列表的元素

  • Python 提供了幾種方法來將子列表中的每個元素乘以其索引。一種常見的方法是使用 for 迴圈。此方法迭代子列表並執行乘法運算。透過使用 enumerate 函式,我們能夠在每次迭代中訪問元素及其索引。

  • 此外,NumPy 庫為陣列操作提供了有效的解決方案。透過將子列表轉換為 NumPy 陣列,我們可以使用索引陣列執行逐元素乘法。此方法簡化了乘法運算並提供了最佳化的效能。

  • 這兩種方法都提供了將子列表中每個元素乘以其索引的所需結果。方法的選擇取決於諸如程式碼可讀性、效率以及對額外陣列操作的需求等因素。Python 的靈活性允許開發人員為其特定需求選擇最合適的方法。 

方法 1 使用 for 迴圈

第一種方法包括使用 for 迴圈迭代子列表並執行乘法運算。以下是此方法的分步演算法:

演算法

  • 定義一個函式,我們將其稱為 multiply_by_index,它接受一個子列表列表作為輸入

  • 建立一個名為 results 的空列表。

  • 使用 for 迴圈迭代輸入列表中的每個子列表

  • 對於每個子列表,迭代其元素並將每個元素乘以其索引。

  • 將結果新增到 results 列表中。

  • 返回 results 列表。

示例

def multiply(sublists):
    results = []
    for i, sublist in enumerate(sublists):  # Use a different variable name to avoid shadowing the "list" keyword
        multiplied_list = []
        for j, element in enumerate(sublist):  # Use separate variables for index and element
            multiplied_list.append(element * i)  # Multiply element by its index i instead of j
        results.append(multiplied_list)
    return results

# Example
sublists = [[71, 2, 83], [4, 50, 6], [37, 8, 19]]
#Invoke multiply function and pass its value to the result variable
result = multiply(sublists)
#Finally, print the result
print(result)

輸出

[[0, 0, 0], [4, 50, 6], [74, 16, 38]]

方法 2 使用 NumPy

第二種方法包括使用 NumPy 庫,該庫在 Python 中提供了高效且有用的陣列操作。NumPy 陣列類似於列表,但提供了額外的功能和最佳化。以下是此方法的演算法

演算法

  • 匯入 NumPy 庫。

  • 定義一個函式 multiply_by_index,它接受一個子列表列表作為輸入。

  • 將子列表轉換為 NumPy 陣列,並將它的值賦給子列表。

  • 使用逐元素乘法將子列表與索引陣列相乘

  • 將結果轉換回巢狀列表。

  • 返回修改後的子列表列表。 

示例

#import the required library
import numpy as np
#Create the user defined function
def multiply(sublists):
    sublists = np.array(sublists)
    indices = np.arange(len(sublists))
    multiplied_sublists = sublists * indices[:, np.newaxis]
    return multiplied_sublists.tolist()

# Example 
sublists = [[18, 2, 83], [4, 15, 6], [7, 98, 9]]
result = multiply(sublists)
print(result)

輸出

[[0, 0, 0], [4, 15, 6], [14, 196, 18]]

結論

在本文中,我們研究了使用 Python 將子列表中的每個元素乘以其索引的兩種不同方法。我們檢查了演算法,提供了分步說明,並顯示了每種方法的 Python 程式碼。此外,我們使用測試輸入說明了每種方法的輸出。    

您可以根據您的特定需求和偏好選擇其中任何一種方法。Python 的靈活性和豐富的庫集使您可以輕鬆有效地完成各種任務。

更新於: 2023年9月1日

473 次檢視

啟動您的 職業生涯

透過完成課程獲得認證

開始
廣告