比较两个python值的最有效方法是什么,这两个值都可能是字符串,但可能是整数.到目前为止,我使用str(x)== str(y),但感觉效率低下(更重要的是)丑陋:
>>> a = 1.0
>>> b = 1
>>> c = '1'
>>> a == b
True
>>> b == c
False # here I wanted this to be true
>>> str(b)==str(c)
True # true, as desired
Run Code Online (Sandbox Code Playgroud)
我的实际对象是使用get()检索的字典值,其中大多数是字符串.
测试一下.我喜欢用%timeit在ipython:
In [1]: %timeit str("1") == str(1)
1000000 loops, best of 3: 702 ns per loop
In [2]: %timeit "1" == str(1)
1000000 loops, best of 3: 412 ns per loop
In [3]: %timeit int("1") == 1
1000000 loops, best of 3: 906 ns per loop
除此之外,如果您真的不知道输入类型是什么,除非您想对输入数据做出假设,否则您无能为力.例如,如果您假设大多数输入相同(相同类型,相同值),您可以执行以下操作:
if a == b or str(a) == str(b):
... they are equal ...
Run Code Online (Sandbox Code Playgroud)
这将是更快,如果他们通常是相同的类型,通常等于......但如果他们通常不是同一类型的,或者不是通常等于它会慢一些.
但是,您确定在输入代码时无法将所有内容都转换为str/int吗?
| 归档时间: |
|
| 查看次数: |
3039 次 |
| 最近记录: |