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 次查看

开启你的 职业生涯

通过完成课程获得认证

开始
广告