输入带有比较运算符的字符串,并在数组索引上执行比较
Posted
技术标签:
【中文标题】输入带有比较运算符的字符串,并在数组索引上执行比较【英文标题】:Input a string with a comparison operator and perform the comparison on an array index 【发布时间】:2021-07-01 04:41:12 【问题描述】:到目前为止,这是我的代码:
# Function to search for possible matches for words: and chapters:
def intSearch(term, row, index):
"""
Index of 6: Word search
Index of 7: Chapter search
"""
rowValue = row[index]
if True:
return True
return False
“如果为真”只是暂时的。所以我想要的是术语输入是一个比较运算符,然后是一个整数,例如'> = 334'。然后可以将这个字符串分解并与我可以使用 row[index] 的行的特定索引进行比较。如果这个比较是正确的,它将返回 True,如果不正确,它将返回 False。比较应该适用于基本上所有的运算符,包括:==、!=、>、= 和范围。
所以比较基本上看起来像:
if row[index] >= term:
其中 row[index] 是数组整数,>= 是比较运算符,term 是要比较的数字。
我可以使用很多 if 和 else 语句,虽然我不确定这会有多有效。
希望我说清楚了。谢谢!
【问题讨论】:
如果你想管理多个条件,那么 if-elif-else 是正确的选择。与其他语言不同,Python 不支持更适合复杂的基于案例的执行的 switch-case 语句。 只是不确定如果我必须为每个操作员进行测试会有多效率 不要过早地优化你的代码,先让它工作,测试它,然后如果它很慢找出问题。有一些慢的东西总比没有代码好:) 所以该函数只是将一个项目与给定的术语进行比较?你可以做return row[index] >= term
。对不起,如果我理解错了,那是你想要做的吗?
【参考方案1】:
对于这类问题有两个非常有用的概念,标准operator
库和标准dictionary
。
例子:
import operator as op
op_map =
"==": op.eq,
"!=": op.ne,
">": op.gt,
"<": op.lt,
"<=": op.le,
">=": op.ge,
x = 10
y = 0
for op_str in op_map:
print(f"x op_str y: op_map[op_str](x, y)")
输出:
10 == 0: False
10 != 0: True
10 > 0: True
10 < 0: False
10 <= 0: False
10 >= 0: True
【讨论】:
以上是关于输入带有比较运算符的字符串,并在数组索引上执行比较的主要内容,如果未能解决你的问题,请参考以下文章
array_merge和array_values重排索引数组性能比较
架构比较 SET QUOTED_IDENTIFIER for View 与索引