Python 如何将集合的每个元素传递给函数?

Python 如何将集合的每个元素传递给函数?,python,function,set,Python,Function,Set,我有一个具有多个元组的集合:set1={(1,1),(2,1)}例如。 现在我想将集合的每个元组传递给一个具有以下签名的方法:process\u tuple(self,tuple) 我使用的是一个for循环,如下所示: 对于集合1中的元组: 进程\u元组(元组) 有更好的方法吗?您的问题基本上是“如何在不使用循环的情况下进行循环”。虽然不需要显式的for循环就可以完成所要求的任务,但循环是迄今为止最清晰、最好的方式 有一些替代方案,但主要是改变循环的外观,而不是一开始就阻止它。如果要在列表中收

我有一个具有多个元组的集合:
set1={(1,1),(2,1)}
例如。 现在我想将集合的每个元组传递给一个具有以下签名的方法:
process\u tuple(self,tuple)

我使用的是一个for循环,如下所示:

对于集合1中的元组:
进程\u元组(元组)

有更好的方法吗?

您的问题基本上是“如何在不使用循环的情况下进行循环”。虽然不需要显式的for循环就可以完成所要求的任务,但循环是迄今为止最清晰、最好的方式

有一些替代方案,但主要是改变循环的外观,而不是一开始就阻止它。如果要在列表中收集函数调用的返回值,可以在循环的同时使用列表理解来构建列表:

results = [process_tuple(tuple) for tuple in set1]
如果理解对您的特定需求有用,您还可以执行
设置
听写
理解。例如,您可以使用以下方法构建从集合中的元组到其处理结果的字典映射:

results_dict = {tuple: process_tuple(tuple) for tuple in set1}
如果您根本不想为set1中的tuple写出
,可以使用内置的
map
函数为您执行值的循环和传递。它返回一个迭代器,您需要完全使用该迭代器才能在完整输入上运行函数。将映射对象传递到
列表
有时是有意义的,例如,将输入转换为数字:

user_numbers = list(map(int, input("Enter space-separated integers: ").split()))

但我也强烈鼓励您将当前代码视为最好的解决方案。仅仅因为您可以将其更改为其他内容,并不意味着您应该这样做。

如果需要,您可以使用生成器表达式,但无论如何循环都将是循环。如果可能,我希望完全删除for循环。我曾考虑过序列解包,但这需要多个或可变参数。为什么要删除for循环?处理函数中的元组集对您来说是一种解决方案吗?我不太理解您的概念性问题。您似乎在问如何依次将集合的每个元组传递给函数,而不必迭代集合。你能澄清一下吗?也许您需要类似于
map
函数的功能?
map
不是
for
循环的替代品,如果您不关心
过程元组的返回值(从示例中可以明显看出)。所示的
for
循环是您所做工作的首选结构。