需要一些python帮助,我有一个列表:
[[sql1, 1, 10], [sql2, 12, 16]...]
我想知道15是否在sql2中,请以简单的方式告诉我在python中。
我在循环中尝试过。
答案 0 :(得分:2)
你将不得不提供一些关于你想要的实现的更多细节,但是如果不回答这太有趣了。
我的回答是:
index == 0
)列表:15
,范围为a(包括)和b(不包括)这是在Python 3中。
>>> x = [['sql1', 1, 10], ['sql2', 12, 16]] >>> [a for a, *b in x if 15 in range(*b)] ['sql2']
这也适用于多个匹配:
>>> x = [['sql1', 1, 10], ['sql2', 12, 16], ['sql3', 15, 17]]
>>> [a for a, *b in x if 15 in range(*b)]
['sql2', 'sql3']
如果您想接受'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
答案 1 :(得分:1)
首先,要解决最简单的解决方案,然后考虑制作一些通用的解决方案。
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
@Robᵩ指出了一个更优雅/紧凑的解决方案,允许我们写:
def in_data(data_sets, data, check_in):
return any(check_in in data_set for data_set in data_sets)
答案 2 :(得分:0)
我对数据进行了硬编码以满足问题要求但是 答案可以根据需要修改
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")