Python 过滤包含全部偶数元素的元组

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)]

结论

我们讨论了解决问题陈述的各种方式。这种方法很有用,因为它使我们能够根据内容访问或更新单个元素,确定特定字符串的出现或频率,或者基于所需字符串在列表中的位置创建条件逻辑。

Camera课程

Python教程

Java教程

Web教程

数据库教程

图形图像教程

办公软件教程

Linux教程

计算机教程

大数据教程

开发工具教程