If statement on whether one string, or list of strings
本问题已经有最佳答案,请猛点这里访问。
我有以下功能。理想情况下,我希望将单个字符串或字符串列表作为输入传递。不管是哪种情况,我都要用。上面。但是,当只传递一个字符串时,迭代器将遍历每个字符。如何使用if语句来测试字符串列表还是单个字符串?(我似乎无法避免弦的无可辩驳的性质)
1 2 3 4 | def runthis(stringinput): for t in stringinput: t = t.upper() |
使用
1 2 3 4 5 6 7 8 9 10 | def runthis(stringinput): if isinstance(stringinput, list): for t in stringinput: t = t.upper() # Some other code should probably be here. elif isinstance(stringinput, basestring): t = t.upper() # Some other code perhaps as well. else: raise Exception("Unknown type.") |
对于python 3,使用
一种方法是显式检查参数是列表还是字符串,并在条件子句中对其进行不同的处理。
我认为更好的选择(如果它适合您的用例)可能是:
1 2 3 4 5 6 7 8 9 | def runthis(*stringinput): for t in stringinput: t = t.upper() print(t) print() runthis("test") # TEST runthis("another","test") # ANOTHER TEST runthis(*["one","final","test"]) # ONE FINAL TEST |
但是,如果调用代码可能提供列表而不显示列表,则此方法不适用。
这种方法依赖于
在函数定义上下文(
您可以在这里阅读更多关于变量参数的信息。
在函数调用上下文(
你可以在这里阅读更多关于喷溅的内容。
您可以使用
1 2 3 4 5 | def to_upper(arg): if isinstance(arg, list): return [item.upper() for item in arg] # This is called list comprehension else: return arg.upper() |
您可以使用
1 2 3 4 5 6 | if type(stringinput) is list: #Your list code elif type(stringinput) is str: #Your string code else: #stringinput isn't a list or a string, throw an error |