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("After Filteration of all the tuple:",result)
输出
After Filteration of all the tuple: [(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:])
# Create tuple and print the tuple
myTuple = (4, 1, 6, 8, 3, 7)
print("The Given String:", str(myTuple))
# Access the even index in Tuple
evenTuple = getEvenValTupleRec(myTuple)
# Printing even indexed tuple
print("All even indexed elements of the tuple:", str(evenTuple))
输出
The Given String: (4, 1, 6, 8, 3, 7)
All even indexed elements of the tuple: (4, 6, 3)
使用filter()和lambda
程序使用名为filter的方法从列表中删除非偶数元素的元组,并使用lambda计算偶数的条件。
需要安装:
pip install functools
以上所需的命令是安装在系统上运行此问题陈述的工具。
示例
在以下示例中,使用名为functools的模块启动程序,该模块提供了一个高级内置函数,用于过滤拥有偶数元素的元组。然后在变量tuple_list中创建输入字符串元组列表。然后打印相同内容以获得原始列表。接下来,使用reduce()和lambda函数过滤具有所有偶数元素的元组,将其存储在变量result中。最后,我们使用变量result来打印输出。
# import functools module
import functools
tuple_list = [(6, 4, 2, 8), (5, 6, 7, 6), (8, 0, 2), (7,)]
# printing original list
print("The original list is : " , str(tuple_list))
# Use reduce() and a lambda function
result = list(filter(lambda t: functools.reduce(
lambda x, y: x and (y % 2 == 0), t, True), tuple_list))
# print results
print("Filtered Tuples : " , str(result))
输出
The original list is : [(6, 4, 2, 8), (5, 6, 7, 6), (8, 0, 2), (7,)]
Filtered Tuples : [(6, 4, 2, 8), (8, 0, 2)]
结论
我们讨论了解决问题陈述的各种方式。这种方法很有用,因为它使我们能够根据内容访问或更新单个元素,确定特定字符串的出现或频率,或者基于所需字符串在列表中的位置创建条件逻辑。