我有两个要比较的列表。我想遍历列表一中的值并将其与列表二中的值进行比较。我希望根据列表一中的值是否小于或等于列表二中的值返回 1、0 或 -1。
例如,列表 1 中的值 2 将被赋值为 0,因为它大于 0 且小于列表 2 中的 3。
list_one = [0,2,5,0,3,7]
list_two = [0,3]
#loop through list one values
for j in list_one:
#loop through list two values
for k in list_two:
if float(j) <= k:
value = 1
break
elif float(j) <= k:
value = 0
break
else:
value = -1
print(value)
实际结果:
1
1
-1
1
1
-1
预期结果:
1
0
-1
1
0
-1
答案 0 :(得分:2)
您的逻辑中存在一些问题,我已在下面附加的代码中对其进行了更改
list_one = [0,2,5,0,3,7]
list_two = [0,3]
#loop through list one values
for j in list_one:
#loop through list two values
value=0
for k in list_two:
if float(j) <= k:
value += 1
break
elif float(j) == k:
value += 0
break
else:
value += -1
if value > 1:
value = 1
elif value < -1:
value = -1
print(value)
告诉我这是否为您解决了问题,问题陈述不是很清楚,我根据我对问题陈述的解释修改了此代码
答案 1 :(得分:0)
撇开#Logic 错误不谈,此代码示例中最大的错误是您对#list_two 的混淆使用。显然 list_two 必须是一个 2 元素列表:[min, max]。任何其他结构#would 难以理解。如果您愿意,请将其保留为列表,但一开始#decode list_two 如下所示:""
min_val = list_two[0]
max_val = list_two[1]
#然后通过 list_one 循环 j 并应用此逻辑:
if j < min_val:
value = 1
elif j > max_val:
value = -1
else:
value = 0
#所以基本上失去了第二个循环(k 循环)。并且绝对删除 float() #references。