Python 中的增量列表擴充套件


列表是 Python 中一種常用的資料型別,用於在一個變數中儲存多個值。在將任何數字/字串新增到列表時,它將使用一些操作和條件透過新增新值來擴充套件列表。在 Python 中,我們有一些內建函式,例如 map()、range() 和 lambda,可用於解決增量列表擴充套件問題。使用列表推導式是另一種生成表示式、條件和有效結果以解決這些問題陳述的方法。

語法

以下語法在示例中使用

map()

內建函式 map() 允許為每個元素迭代指定一個特定函式。

range()

range() 是 Python 中的內建函式,用於將新元素的集合設定為列表。

lambda

函式lambda提供了一種使用 lambda 關鍵字宣告簡短匿名函式的快捷方式。lambda 函式只有一個表示式。

使用巢狀列表推導式

程式透過初始化兩個不同的變數並使用列表推導式來使用兩個巢狀列表,它允許 for 迴圈遍歷輸入列表。

示例

在以下示例中,首先在變數 str_inp 中建立一個輸入列表來啟動程式。然後初始化兩個變數 - n(為每個索引設定範圍)和 E(設定擴充套件)。接下來,它將使用第一個列表推導式透過使用 for 迴圈和內建函式 range() 來設定每個索引的擴充套件和範圍,這些過程儲存在變數 temp 中。現在將變數 temp 初始化為 0,這表示下一個列表推導式中迭代的初始值。然後在變數 result 中使用第二個列表推導式。最後,我們藉助名為 result 的變數列印輸出。

str_inp = [10, 20, 30, 40]
n = 3 # Set the limit for a particular index
E = 2 # Extension
temp = [1 * E**i for i in range(n)]
temp[0] = 0
result = [ele + tele for ele in str_inp for tele in temp]
print("The incrementing list extension and addition:", result)

輸出

The incrementing list extension and addition: [10, 12, 14, 20, 22, 24, 30, 32, 34, 40, 42, 44]

使用 map() 和 Lambda

程式使用一些內建函式,例如 list() 建立列表物件,map() 允許特定迭代,以及 lambda 計算列表擴充套件。

示例

在以下示例中,我們將使用 Python 函式的內建巢狀結構,例如 map(),它接受兩個引數 - lambda 使用 for 迴圈計算特定元素的擴充套件,以及輸入列表以指定每個索引元素。處理完這些函式後,它將設定為內建函式 list(),該函式將結果值轉換為列表形式。接下來,使用列表推導式,它將迭代範圍和擴充套件的所有元素。最後,顯示程式輸出

# input list
my_str = [1, 2, 3, 4, 5]
n = 2 # Range
E = 3 # Extension
# Using arithmetic operator in list comprehension
temp = [1 * E**i for i in range(n)]
temp[0] = 0
res = list(map(lambda elem: [elem + extn for extn in temp], my_str))
# list comprehension
result = [num for sublist in res for num in sublist]
print("The incrementing list extension and addition:", result)

輸出

The incrementing list extension and addition: [1, 4, 2, 5, 3, 6, 4, 7, 5, 8]

使用 itertools.product()

程式使用一個名為itertools.product()的 Python 模組,它返回輸入可迭代物件的笛卡爾積,並幫助根據增量列表擴充套件生成輸出。

示例

在以下示例中,我們將首先匯入名為 itertools 的模組,該模組將在 for 迴圈迭代中使用。然後初始化範圍和擴充套件的值。將使用兩個列表推導式 -

i. 第一個列表推導式 - 它將使用乘法和冪運算來處理給定值的範圍和擴充套件。

ii. 第二個列表推導式 - 在此推導技術中,它將使用兩個變數進行迭代,使用 for 迴圈並藉助內建函式 itertools.product() 定義所有有序對的集合。

import itertools
my_list = [100, 200, 300]
n = 4 # Range
E = 3 # Extension
# First list comprehension
temp = [1 * E**i for i in range(n)]
temp[0] = 0
# Second list comprehension
res = [elem + total_elem for elem, total_elem in itertools.product(my_list, temp)]
print("The incrementing list extension and addition:", res)

輸出

The incrementing list extension and addition: [100, 103, 109, 127, 200, 203, 209, 227, 300, 303, 309, 327]

使用生成器表示式

程式使用生成器表示式,其工作方式類似於列表推導式,它有助於增加列表擴充套件。

示例

在以下示例中,我們將使用兩個不同的算術運算子 - 乘法(*)和冪運算(**)來處理此程式的 for 迴圈的範圍和擴充套件迭代。然後使用生成器表示式,它將針對特定索引來處理範圍和擴充套件。接下來,顯示結果。

my_lst = [5, 10]
n = 5 # Range
E = 2 # Extension
temp = [1 * E**i for i in range(n)]
temp[0] = 0
# Iteration of given input list(generator expression)
result = (element + extension for element in my_lst for extension in temp)
print("The incrementing list extension and addition:", list(result))

輸出

The incrementing list extension and addition: [5, 7, 9, 13, 21, 10, 12, 14, 18, 26]

結論

我們討論瞭解決問題陳述的各種方法。大多數示例都使用推導技術,而一個示例使用了 itertools 模組,該模組定義了兩個變數之間的笛卡爾積。

更新於: 2023年8月14日

177 次檢視

開啟你的 職業生涯

透過完成課程獲得認證

開始
廣告

© . All rights reserved.