循环遍历两个列表,将一个列表与另一个列表进行比较并返回值

时间:2021-05-05 14:26:32

标签: python list loops

我有两个要比较的列表。我想遍历列表一中的值并将其与列表二中的值进行比较。我希望根据列表一中的值是否小于或等于列表二中的值返回 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

2 个答案:

答案 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。