Python - 过滤所有偶数元素的元组

pythonserver side programmingprogramming更新于 2023/12/29 3:22:00

问题陈述允许我们确定列表中所需字符串的位置,这可用于各种目的,例如访问或操作该特定索引处的元素。在 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)]

结论

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


相关文章