Python 语法:如何检查返回值中是不是存在“x”?
Posted
技术标签:
【中文标题】Python 语法:如何检查返回值中是不是存在“x”?【英文标题】:Python Syntax: How do I check if 'x' exists in the return value?Python 语法:如何检查返回值中是否存在“x”? 【发布时间】:2021-08-11 13:50:37 【问题描述】:我有一个 Python 语法问题。
如果 result() 传入 3 个参数,因此返回 (x, y, z) 形式的内容,如何检查返回值中是否存在“x”?
我想检查函数 result() 中的 thing、thing2 或 thing3 是否为“X”。现在,我正在写“虽然结果中的'X':”......但我认为我这样做不正确,因为结果不是字符串。
我只是想看看结果,可能是 (a,b,c) 或 (1, 2, 3) 或 (x, y, z) 是否包含“x”。例如,如果结果是 (x,y,z) 并且我询问结果是否包含“x”,它将返回 true。如果我问同样的问题,结果是 (a, b, c),它会返回 false。我该怎么做呢?
def result(thing, thing2, thing3):
# Returns a new thing (deepcopied) with thing3 space taken by thing2
new_thing = thing.copy()
new_thing[thing3] = thing2
return new_thing
def terminal(thing, k):
while 'X' in result:
【问题讨论】:
这个问题有点太抽象了。确定一个值是否为in
一个对象取决于该对象是什么以及它如何确定它是否包含某些内容。如果您有一个关于您正在使用的实际对象的具体示例,那么提供一个真正的答案会更容易。例如,如果thing
是一个列表,你可以使用in
:'b' in ['a', 'b', 'c']
true,但如果是别的,谁知道呢?
'x' in result
可能是您所要求的,in
适用于所有可迭代的对象(注意:它不检查嵌套对象)
嗨,汤姆,谢谢。但是,尽管 termianl 的返回值,首先说“x”在结果中是否有效?或者我应该做类似“if result[1] == X:...”之类的事情吗?
@Mark 你说得对,我应该提供更多上下文...thing 表示为 2d numpy 数组,thing3 返回该数组中空格的所有可能索引,thing2 设置为代码中所说的 new_thing[thing3]。
@Tom Karzes,我刚刚对 Mark 说的话是否改变了你最后提出的观点?我应该更具体。
【参考方案1】:
我认为while 'X' in result:
语句没有按您预期的方式工作,因为result
是函数而不是函数的输出,即result()
。但是terminal
不能以明显的方式调用结果,除非你想要类似result(thing, k, k)
的东西,因为result
有三个必需的参数,而terminal
只有两个输入。
编辑:
如果您知道result
返回一个可迭代对象(如列表或元组),那么在没有result(arg1, arg2, arg3)[i]
形式的某种手动索引的情况下执行while 'X' in result(arg1, arg2, arg3):
总是有效的
【讨论】:
以上是关于Python 语法:如何检查返回值中是不是存在“x”?的主要内容,如果未能解决你的问题,请参考以下文章