如何检查变量是否在特定范围内

我有一个列表列表,如下所示:


 mylists =   [[['CS105', 'ENG101', 'MATH101', 'GER'], 3.4207362518089726, 0.2808766238976195], [['CS105', 'ENG101', 'GER', 'GER'], 2.9687393162393163, 0.3408964829117446]]

我想要做的是获取用户提供的数字,然后检查提供的数字与每个子列表的第二个元素相比是否相等或在 +0.6 的范围内。换句话说,我想执行以下操作:如果用户输入是 3.4,那么我想根据列表列表提供的示例检查这两个数字:3.4207362518089726 和 2.9687393162393163,如果这些数字在输入的 +0.6 范围内,然后将整个子列表保存在另一个列表中。


所以,user_input = 3.4, mylists[0][1] = 3.4207362518089726, mylists[1][1] = 2.9687393162393163 我想把每个子列表都放在一个新列表中,每个子列表有 3.4及以上,直到 4.0(由于范围+ 0.6 )


我的想法是:


for i in range(0, len(mylists)):

        if mylists[i][1] >= user_input + 0.6:

             new_list.append(mylists[i])

但这当然行不通。


慕运维8079593
浏览 94回答 3
3回答

ibeautiful

您的条件只是写错了 - 它正在选择第二个元素为的子列表>= user_input + 0.6(计算结果为>= 4.0,但您希望第二个元素为between 3.4 and 4.0。所以我相信您需要做的就是像这样更改它:for i in range(0, len(mylists)):&nbsp; &nbsp; if user_input <= mylists[i][1] <= user_input + 0.6:&nbsp; &nbsp; &nbsp; &nbsp; new_list.append(mylists[i])希望对您有所帮助,编码愉快!

Cats萌萌

您是否收到错误或只是意外的输出?也许你可以试试:new_list&nbsp;=&nbsp;list(filter(lambda&nbsp;x:&nbsp;user_input<=&nbsp;x[1]&nbsp;<=&nbsp;user_input&nbsp;+&nbsp;0.6&nbsp;,&nbsp;mylists))

FFIVE

你可以使用这个:import remylists =&nbsp; &nbsp;[[['CS105', 'ENG101', 'MATH101', 'GER'], 3.4207362518089726, 0.2808766238976195], [['CS105', 'ENG101', 'GER', 'GER'], 2.9687393162393163, 0.3408964829117446]]user_input = 3.4st = str(user_input) #transform input from user to stringdenom = '1'+len(st.split('.')[-1])*'0' #get how much decimals st have and create denominator to the decimal partdecimal_part = 1- int(st.split('.')[-1])/int(denom) #create decimal numbers&nbsp; to reach upper boundnew_list = []for i in range(0, len(mylists)):&nbsp; &nbsp; if user_input <= mylists[i][1] <= user_input + decimal_part:&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;new_list.append(mylists[i])另一种方法是:import numpy as npmylists =&nbsp; &nbsp;[[['CS105', 'ENG101', 'MATH101', 'GER'], 3.4207362518089726, 0.2808766238976195], [['CS105', 'ENG101', 'GER', 'GER'], 2.9687393162393163, 0.3408964829117446]]user_input = 3.4new_list = []for i in range(0, len(mylists)):&nbsp; &nbsp; if user_input <= mylists[i][1] <= np.ceil(user_input):&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;new_list.append(mylists[i])
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Python