【发布时间】: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 说的话是否改变了你最后提出的观点?我应该更具体。