如果有效数字的数量不完全匹配,如何检查另一组中是否包含一组?例如,我想知道set s2中是否包含set s1(我希望它是):
>>> s1 = set(['1', '2', '3'])
>>> s2 = set(['1.000', '2.000', '3.000', '4.0000'])
>>> s1 in s2
False
但是从
开始>>> '1' in '1.000'
True
>>> '2' in '2.000'
True
>>> '3' in '3.0000'
True
>>> '4' in '4.000'
True
我不明白为什么Python不认为set s1在set s2中,因为很明显它认为s1的每个元素都包含在set s2的元素中。
答案 0 :(得分:3)
使用字符串操作来处理数字是一个坏主意。相反,您应该将数字转换为数字类型,例如float
或decimal.Decimal
,以便它们的行为与实际数字相同。然后,您可以将它们舍入到适当的精度,并以通常的方式比较它们(或它们的集合)。如果你只关心尾随零,你甚至不需要回合。
例如,如果您认为两位精度足够好(并且您不介意float
是二进制值,可能无法准确表示您输入的十进制数字):
s1 = set(['1', '2', '3'])
s2 = set(['1.000', '2.000', '3.000', '4.0000'])
rounded_s1 = set(round(float(i), 2) for i in s1)
rounded_s2 = set(round(float(i), 2) for i in s2)
print(rounded_s1.issubset(rounded_s2))
答案 1 :(得分:0)
实际上,这并不相同,因为' 1'不等于' 1.000'你可以看到' 1'属于' 1.000'。他们是不同的角色 试试这个
s1 = set(['1.000', '2.000', '3.000'])
s2 = set(['1.000', '2.000', '3.000', '4.0000'])
print (s1.issubset(s2))
if('1'=='1.000'):
print ("ok")
这是没有单一报价的正确的
s1 = set([1,2,3])
s2 = set([1.000, 2.000, 3.000, 4.0000])
print (s1.issubset(s2))
答案 2 :(得分:-1)