【问题标题】:Passing an array as an argument in Python在 Python 中将数组作为参数传递
【发布时间】:2021-04-30 10:48:19
【问题描述】:

我不确定这是否可行,但我正在尝试创建一个 python 程序来识别多项式并识别它们的所有属性。我试图制作一个类似于 switch() 函数的函数,以及我要为每种数量的参数情况制作数百个函数的方式,我想让其中一个参数成为一个数组,目前它是给我一堆错误,我真的不知道我应该做什么,因为他们没有解释自己,我环顾四周,没有找到任何有效的方法,任何帮助将不胜感激,我相当肯定python中有一个类似的函数,但是任何关于它的文章都很混乱,谢谢,下面是我试图制作的函数。

def switch(checked, check):
    for(item in check):
        if(item == check):
            return True
    
    return False

【问题讨论】:

  • 您的缩进已关闭。这可以解释您应该发布的语法错误。
  • 仍然不正确的缩进:return False
  • @TimurShtatland 当我复制并粘贴它时,缩进是关闭的,我已经对其进行了编辑,以便缩进是正确的,它现在看起来像代码编辑器
  • @TimurShtatland 我刚刚解决了这个问题,很抱歉这是我在网站上的第一个问题,我仍然不知道提问的具体原理

标签: python arrays function switch-statement arguments


【解决方案1】:

如果你需要模拟一个 switch 语句,你可以使用这样的辅助函数:

def switch(v): yield lambda *c: v in c

然后你就可以在类似 C 的风格中使用它了:

x = 3
for case in switch(x):
    if case(1,2):
       # do something
       break
    if case(3):
       # do something else
       break
    if case(4,5,7):
       # do some other thing
       break
else:
    # handle other cases

或者你可以使用 if/elif/else 语句:

x = 3
for case in switch(x):
    if   case(1,2):   # do something
    elif case(3):     # do something else
    elif case(4,5,7): # do some other thing
    else:             # handle other cases

【讨论】:

    【解决方案2】:

    要检查某项是否是列表中的一项,您无需遍历列表。您可以只使用in 运算符:

    d = ['abc', 'xyz', 1, 99]
    
    if 'abc' in d:
        # True
        # do something
    
    if 'mno' in d:
        # False
        # do something
    

    【讨论】:

    • 谢谢,如果我发现我已经完成的方式有问题,我会尝试这个解决方案
    【解决方案3】:

    你是这个意思吗?

    def switch(checked, check):
        for item in check:
            if item == checked:
                return True
        return False
    

    【讨论】:

    • 是的,我的 java 习惯正在渗透到我的 python 代码中,谢谢
    猜你喜欢
    • 1970-01-01
    • 2011-09-12
    • 2011-08-12
    • 2016-09-26
    • 1970-01-01
    • 2010-11-06
    相关资源
    最近更新 更多