Python - 过滤所有偶数元素的元组
问题陈述允许我们确定列表中所需字符串的位置,这可用于各种目的,例如访问或操作该特定索引处的元素。在 Python 中,我们有一些内置函数,如 reduce()、str()、filter()、lambda 和 all(),它们将用于在列表中查找包含字符串的索引。
语法
示例中使用了以下语法-
reduce()
此函数在 functools 模块下定义
str()
这是 Python 中的内置方法,可以将指定的值转换为字符串。
filter()
当我们根据特定条件过滤项目时,将应用 filter() 方法。简单来说,它允许用户迭代那些被提取出来满足条件的元素。
lambda
函数lambda提供了一种使用lambda关键字声明简短匿名函数的快捷方式。 lambda 函数在使用 def 关键字表达时会起作用。
all()
这是 Python 中的内置方法,接受可迭代对象,例如列表、字典、元组等。
使用列表理解和 all() 方法
该程序使用列表理解方法,该方法在一行中定义循环和条件表达式的组合,还包括方法 all()。
示例
在下面的示例中,使用变量 tuple_list 中的输入元组列表启动程序。然后使用列表理解技术,通过使用 for 循环和 if 语句中的模数 % 和 == 运算符将条件设置为偶数。最后,我们在变量 result 的帮助下打印输出。
tuple_list = [(61, 14, 12, 18), (52, 61, 73, 69), (80, 111, 211),(2,4)] result = [tup for tup in tuple_list if all(ele % 2 == 0 for ele in tup)] print("过滤所有元组后:",result)
输出
过滤所有元组后:[(2, 4)]
使用递归
程序使用通过函数调用定义的递归来执行自身。在函数内部,它将使用名为 len() 的内置方法和切片来筛选包含所有偶数元素的元组。
示例
在下面的示例中,程序中的函数 getEvenValTupleRec() 定义了一个新元组,该元组包含输入元组的偶数索引处的元素,并返回包含相同项的新元组。通过使用输入元组的切片版本调用自身,该函数使用递归来实现此目的。然后,程序在变量 myTuple 中创建一个元组,显示它,并使用 myTuple 作为参数来运行 getEvenValTupleRec() 函数以返回偶数索引元素。然后,程序打印结果。
def getEvenValTupleRec(myTuple): if len(myTuple) == 0 or len(myTuple) == 1: return () return (myTuple[0], ) + getEvenValTupleRec(myTuple[2:]) # 创建元组并打印元组 myTuple = (4, 1, 6, 8, 3, 7) print("给定字符串:", str(myTuple)) # 访问元组中的偶数索引 evenTuple = getEvenValTupleRec(myTuple) # 打印偶数索引元组 print("元组的所有偶数索引元素:", str(evenTuple))
输出
给定字符串:(4, 1, 6, 8, 3, 7) 元组的所有偶数索引元素:(4, 6, 3)
使用 filter() 和 lambda
程序使用名为 filter 的方法从列表中删除非偶数元素元组,并使用 lambda 计算偶数的条件数。
所需安装:
pip install functools
上述所需命令安装在系统上,将有助于运行此问题陈述。
示例
在下面的示例中,使用名为 functools 的模块启动程序,该模块提供高级内置函数,将过滤具有偶数元素的元组。然后在变量 tuple_list 中创建输入字符串元组列表。然后打印相同内容以获取原始列表。接下来,使用 reduce() 和 lambda 函数在 list() 的参数下过滤具有所有偶数元素的元组并将其存储在变量 result 中。最后,我们在变量 result 的帮助下打印输出。
# import functools module import functools tuple_list = [(6, 4, 2, 8), (5, 6, 7, 6), (8, 0, 2), (7,)] # 打印原始列表 print("原始列表是:" , str(tuple_list)) # 使用 reduce() 和 lambda 函数 result = list(filter(lambda t: functools.reduce( lambda x, y: x and (y % 2 == 0), t, True), tuple_list)) # 打印结果 print("过滤后的元组:" , str(result))
输出
原始列表为:[(6, 4, 2, 8), (5, 6, 7, 6), (8, 0, 2), (7,)] 过滤后的元组:[(6, 4, 2, 8), (8, 0, 2)]
结论
我们讨论了解决问题陈述的各种方法。这种方法很有用,因为它允许我们根据内容访问或更新单个元素,确定特定字符串的出现或频率,或根据列表中所需字符串的位置创建条件逻辑。