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 函数过滤所有元素均为偶数的元组,作为 list() 的参数,并将其存储在变量 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)]

结论

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

更新于:2023年8月17日

浏览量:198

开启您的职业生涯

完成课程获得认证

开始学习
广告
© . All rights reserved.