假设我有一个包含以下内容的列表:
L = [['10.2','9.1','G'],['12.9','7.4','H'],['5.6','4.3','G'],['5.7','4.5','G']]
列表中每个列表中的字母表示类似“type”的内容
在这种情况下,python将请求用户输入四个以“:”分隔的浮点数,例如
input = 5.5:4.4:5.7:4.7
在python继续处理输入之前,如列表列表所示,第三部分的每个列表中的字母表示一个类型
例如,在用户输入时,python会将输入的数目与用户输入范围内的list-of-list中的值进行比较,输入范围为type'G'。你知道吗
因此,python将从数字在范围内的列表中输出列表,作为用户输入。所以
input = 5.5:4.4:5.7:4.6
output = [5.6,4.3] and [5.7,4.5]
我试了一下,但我不知道如何才能将范围内的列表输出到输入。你知道吗
L = [['10.2','9.1','G'],['12.9','7.4','H'],['5.6','4.3','G'],['5.8','4.5','G']]
userinput = input("Enter floats:") #example 5.5:4.4:5.7:4.6
strSeparate = userinput.split(':')
floatInput = [float(i) for i in strSeparate] #turn input into float
inputList = [floatInput[:2],floatInput[2:]] #[[5.5,4.4],[5.7,4.6]]
for line in L:
for val in inputList:#???
输出格式为:
[[5.6,4.3],[5.7,4.5]]
使用numpy.arange()和numpy.any()函数的解:
输出:
您可以按如下所示操作。你知道吗
首先,在
:
上拆分用户输入,将值转换为浮点值,并创建一个迭代器来帮助将值与zip()
配对。然后将每一对与L
中的范围进行比较。如果一对的值都在范围的上限值和下限值之间,则该对位于范围内。位于该范围内的任何对都将添加到results
列表中。你知道吗这将输出:
请注意,如果一个范围内有多个输入对,则此代码将在
results
中包含重复值。如果不需要,可以使用set
而不是list
来表示results
,并将元组添加到集合中(因为列表是不可散列的)。你知道吗此外,这还假设
L
中每个子列表的上界和下界是按顺序排列的(先上后下)。如果不是这样,你可以这样做:相关问题 更多 >
编程相关推荐