Python 查找列表中介于哪个范围之间的数字

Python 查找列表中介于哪个范围之间的数字,python,Python,需要一些python帮助,我有一个列表: [[sql1, 1, 10], [sql2, 12, 16]...] 我想知道sql2中是否有15,请用python简单地告诉我 我已经试过了 您将不得不提供更多关于所需实现的细节,但这太有趣了,无法不回答 我的回答假设: 您需要子列表的开始字符串(index==0)列表,其: 第二和第三个元素包含a(包含)和b(排除)范围内的15 这是在Python3中实现的 >>> x = [['sql1', 1, 10], ['sql2', 12, 16]] >

需要一些python帮助,我有一个列表:

[[sql1, 1, 10], [sql2, 12, 16]...]
我想知道sql2中是否有15,请用python简单地告诉我


我已经试过了

您将不得不提供更多关于所需实现的细节,但这太有趣了,无法不回答

我的回答假设:

  • 您需要子列表的开始字符串(
    index==0
    )列表,其:
  • 第二和第三个元素包含a(包含)和b(排除)范围内的
    15
  • 这是在Python3中实现的

    >>> x = [['sql1', 1, 10], ['sql2', 12, 16]] >>> [a for a, *b in x if 15 in range(*b)] ['sql2'] 如果要接受
    'sql2'
    15
    作为输入并返回布尔值:

    >>> x = [['sql1', 1, 10], ['sql2', 12, 16]]
    >>> check = 'sql2'
    >>> n = 15
    >>> any(a == check and n in range(*b) for a, *b in x)
    True
    

    首先,用最简单的方法来解决问题,然后再考虑用它来做一些通用的东西

    test_data = [['sql', 1, 10],['sql2', 12, 16, 15]]
    print(15 in test_data[1]) # True
    
    我们甚至可以把它推广成一个函数

    def in_data(data_sets, data, check_in):
        for data_set in data_sets:
            if data in data_set:
                if check_in in data_set:
                    return True
        return False
    
    @抢劫ᵩ 指出了一个更优雅/紧凑的解决方案,使我们能够编写:

    def in_data(data_sets, data, check_in):
        return any(check_in in data_set for data_set in data_sets)
    

    我已硬编码数据以满足问题要求,但 答案可以根据需要修改

    my_list = [['sql1', 1, 10], ['sql2', 12, 16]]
    
    for i in range(len(my_list)):
        print(my_list[i])
        if my_list[i][0] == 'sql1':
            if '15' in my_list[i][0]:
                print("found")
            else:
                print("not found")
    

    也许你写的是最简单的方式;在您分享之前,您不能说15是列表中以
    sql2
    开头的两个整数之一,还是15在这两个整数之间?您确定
    sql1
    sql2
    等的值不同吗?请显示您的代码并解释您遇到的困难它在Python 2.7中不起作用-OP没有说明version@volcano; 正确,因为没有说明版本,所以我选择了3。xit最好直接迭代我的_列表:
    对于我的_列表中的子列表:if sublist[0]…
    @juanpa.arrivillaga;的确如此。谢谢你的提示。列表理解总是很有趣的!:)+1或,使用
    any()
    内置:
    返回any(在数据集中检查数据集中的数据集)
    @Robᵩ 我喜欢!谢谢你给我看这个。:)
    my_list = [['sql1', 1, 10], ['sql2', 12, 16]]
    
    for i in range(len(my_list)):
        print(my_list[i])
        if my_list[i][0] == 'sql1':
            if '15' in my_list[i][0]:
                print("found")
            else:
                print("not found")