Python 如何检查列表中是否存在值,并在元素中以行分隔

Python 如何检查列表中是否存在值,并在元素中以行分隔,python,list,Python,List,我需要检查示例13或17.5的值是否存在于字符串列表中定义的范围内,例如: L = ["12-14", "15-16", "17-20"] 例如,范围为12至14(含12至14),15至16,等等 我想: if "13.5" in L: print("yes") else: print("no") 预期产出:是 如何执行此操作?使用.split,然后使用任何 假设列表中的项目表示范围,您可以尝试以下操作: def check(x, ranges_list): x =

我需要检查示例13或17.5的值是否存在于字符串列表中定义的范围内,例如:

L = ["12-14", "15-16", "17-20"]
例如,范围为12至14(含12至14),15至16,等等

我想:

if "13.5" in L:
    print("yes")
else:
    print("no")
预期产出:是

如何执行此操作?

使用.split,然后使用任何


假设列表中的项目表示范围,您可以尝试以下操作:

def check(x, ranges_list):
    x = float(x)
    for s in ranges_list:
        start, end = s.split('-')
        if float(start) <= x <= float(end):
            return True

    return False

my_ranges = ["12-14", "15-16", "17-20"]
if check('13.5', my_ranges):
    print('yes')
else:
    print('no')

Obs:这假设所有数字都可以转换为浮点。

字符串表示有点粗糙,那么简单的类MyRange如何,您可以简单地为数字x和MyRange的实例m发出x in m


如果x等于端点,则_包含_u检查成功,您可以使用创建元组列表以方便查找来更改此行为

L = ["12-14", "15-16", "17-20"]
L_tup=[tuple(map(int,k.split('-'))) for k in L]
num=13
for i in L_tup:
    if i[0] < num <i[1]:
        print('yes')
        break
    else:
        print('no')

那么…你想让Python给你错误的答案吗?我想它们可能是范围。你的项目是字符串,Python不会将它们理解为范围。@wim否,我想要预期的输出:是的…我不理解这方面的反对票。这似乎是一个合理的问题
>>> class MyRange:
...:    def __init__(self, start, end):
...:        self.start = start
...:        self.end = end
...:    def __contains__(self, x):
...:        return self.start <= x <= self.end
...:    def __repr__(self):
...:        return '{}({!r}, {!r})'.format(type(self).__name__, self.start, self.end)
>>> 
>>> lst = ["12-14", "15-16", "17-20"]
>>> 
>>> my_ranges = [MyRange(*map(float, s.split('-'))) for s in lst]
>>> my_ranges
>>> [MyRange(12.0, 14.0), MyRange(15.0, 16.0), MyRange(17.0, 20.0)]
>>> 
>>> any(13.5 in r for r in my_ranges)
>>> True
>>> any(11.7 in r for r in my_ranges)
>>> False
>>> any(17.5 in r for r in my_ranges)
>>> True
L = ["12-14", "15-16", "17-20"]
L_tup=[tuple(map(int,k.split('-'))) for k in L]
num=13
for i in L_tup:
    if i[0] < num <i[1]:
        print('yes')
        break
    else:
        print('no')