我将解释这个例子,因为这样更容易描述:
假设我们有一个不确定的(X)数量的变量,可以是列表或字符串。在
例如,X=3,我们有:
Var1=list("a","b")
Var2=list("c","d")
Var3="e"
所有这些都在一个列表中: ListOfVariables=[Var1,Var2,Var3]
然后我们就有了一个函数(我们事先不知道这个函数,但是它使用了和我们有相同数量X的变量)在这些变量上运行。在
^{pr2}$这里的目标是让函数使用所有输入变量运行,如果其中一个是列表,它必须为列表中的每一项执行该函数。所以我们想要的结果是调用所有函数,如下所示:
^{3}$到目前为止,我使用了一个helper函数来识别Var1、Var2和Var3,但是我的大脑没有太多的递归可预测性,因此无法定义这个HelperFunction,例如:
def HelperFunction():
for item in ListOfVariables:
if type(item).__name__=='list':
#This one will be done as a "for", so all the items in this list are executed as input (Var1 and Var2 in the example)
else:
#This item doesnt need to be included in a for, just execute once (Var3 in the example)
我知道用python可以做到这一点,但我无法在脑海中编写我需要的函数,它的复杂程度比我的“大脑仿真器”所能模拟的python=(
非常感谢你的帮助。在
非常感谢您的回答,但我不确定所提出的解决方案是否能解决问题。 如果我们运行:
helper_function(ListOfVariables)
那么helper_函数应该调用函数“function”4次,如下所示:
^{3}$目的是使用输入中的所有变量,但在函数需要的相应位置使用它们。 更具体地说,helper_函数(变量列表)的逻辑过程是:
Var1是一个列表,因此,我将不得不循环它的contains并运行函数(),但这些只是函数的第一个参数!在
Var2是一个列表,因此,我还将循环,项仅是Function()的第二个参数
Var3是单个项,因此,对于其他两个循环,此值将被指定为常量。在
这就是我们得到想要的:
^{3}$非常感谢你,我只是自己搞不懂!在
如果我理解正确的话,那么进一步概括这个问题:您希望在参数中所有元素的乘积上迭代函数;非列表参数应该被视为只包含它们自身的列表。使用
itertools
模块,并将其视为迭代过程而不是递归过程,从而简化了事情:如果需要处理列表,则需要递归过程。在
这就是你要找的东西吗?在
如果列表中的项是字符串,则对其运行函数。如果不是这样,那么您只需对该项再次调用helper函数,因为它接受任何包含字符串的任意列表。在
如果我没弄错的话,你不知道需要多少个参数,但是你希望在它们上运行一个函数。如果是这样,您希望使用
*
来定义一个未知数量的参数,这些参数将被视为一个列表。那么这只是一个条件,比如:是这样吗?在
相关问题 更多 >
编程相关推荐