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]
使用生成器表达式
该程序使用生成器表达式,类似于列表推导式,它有助于增加列表的扩展。
示例
在下面的示例中,我们将使用两个不同的算术运算符——乘法(*)和指数(**)来处理该程序中range的迭代和扩展的使用。然后使用生成器表达式来定位特定的索引来操作range和扩展。接下来,显示结果。
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模块,该模块定义了两个变量之间的笛卡尔乘积。