繁体   English   中英

如何检查列表项是否位于另一个列表中的元组之间?

[英]How to check if list item sits between tuples in another list?

当另一个列表中的项目在数字上介于它们之间时,我试图返回列表中的一对元组。 我浏览了该网站以寻求帮助,但我无法找到适合我/适用的解决方案。

首先考虑以下两个列表:

my_list = [1.5, 1.2, 1.1]
min_max = [(1.1, 1.4), (1.0, 1.3), (1.6, 1.8)]

我需要my_list中的每个项目遍历min_max列表中的每对元组,当它位于该范围内时返回一对。 使用来自my_list的数据,它将返回:

(1.1, 1.4)
(1.0, 1.3)

请注意,虽然 1.2 和 1.1 都介于 (1.0, 1.3) 之间,但我只需要它返回一次。 进步:当使用lambda function 固定范围时,我可以遍历列表,我尝试使用列表迭代扩展它,但我无法让它工作

list_return = filter(lambda x: 1.1 <= x <= 1.5, my_list)
[i for i in my_list]
print (list_return)

我已经尝试了各种变化,我开始怀疑我是否正确地接近这个?

似乎您一直在尝试遍历my_list ,但这更容易遍历min_max并检查my_list中的任何值是否在每对之间。 这对我有用。

result = [(a, b) for a, b in min_max if any(a <= item <= b for item in my_list)]
print(result)

我得到

[(1.1, 1.4), (1.0, 1.3)]

你可以做

my_list = [1.5, 1.2, 1.1]
min_max = [(1.1, 1.4), (1.0, 1.3), (1.6, 1.8)]
for i in[i for i in min_max if list(filter(lambda x: min(i) <= x <= max(i), my_list))]:
    print(i)

那将 output

(1.1, 1.4)
(1.0, 1.3)

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM