PYTHON:如何使内部函数一次返回一个值,并根据外部函数的条件决定运行还是停止?

我试图提出一种方法来为我要解决的问题编写有效的排列。我已经遍历了NumPy和SymPy的文档,却找不到任何有助于我所了解的内容。

我需要的东西:我想创建一个选择性排列函数,而不是返回所有可能的排列,而只是简单地逐个返回单个排列。

整个过程的构想:外部函数调用我的选择性排列函数,此函数一次返回一个值,以供外部函数求值。如果它通过外部函数的条件语句,那么我们就完成了;否则,它将再次为下一个值计算内部函数,依此类推。

我已经阅读了实现收益的方法,但是我不确定在这种情况下如何实现收益。

如果有人对如何一次返回一个值并根据外部条件决定是否运行有任何建议,我将不胜感激。

iCMS 回答:PYTHON:如何使内部函数一次返回一个值,并根据外部函数的条件决定运行还是停止?

Python的itertools.permutations已经做到了-

from itertools import permutations

for p in permutations("abcd",2):
  print(p)
  if p == ("b","c"):
    break

print("done")
('a','b')
('a','c')
('a','d')
('b','a')
('b','c')
done

这是因为itertools.permutations返回了一种惰性生成器,而不是预先计算所有排列。

print(permutations("abcd",2))
# <itertools.permutations object at 0x7f26ebd0bf40>

如果要所有个排列,则必须将它们收集在list-

print(list(permutations("abcd",2)))
# [('a','b'),('a','c'),'d'),('b','a'),('c',('d','c')]

这就是程序中的样子

def solve (values,size,check):
  for p in permutations(values,size):
    if (check(p)):
      return p

answer = \
  solve \
    ( [ 5,3,9,-4,7 ]     # nums to check,3                      # permutation size,lambda p: sum(p) == 10 # find permutation that adds to 10
    )

print(answer)
# (5,-4)

然后答案检查出来:5 + 9 + -4等于10

,

这应该很简单:

def innerFunction(your_inputs):
   #Generate Permutations & combinations
   for permutation in all_permutations:
       yield permutation

def OuterFunction():
    for permutation in innerFunction():
          if condition:
              break;
本文链接:https://www.f2er.com/1820552.html

大家都在问