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

Python 循环遍历两个列表,将一个列表与另一个列表进行比较并返回值,python,list,loops,Python,List,Loops,我有两个列表要比较。我想循环列出一个值,并将其与清单2中的值进行比较。我希望根据列表1中的值是否小于或等于列表2中的值返回1、0或-1 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) <

我有两个列表要比较。我想循环列出一个值,并将其与清单2中的值进行比较。我希望根据列表1中的值是否小于或等于列表2中的值返回1、0或-1

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中的值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
0
-1
1
0
-1

在您的逻辑中有一些问题,我在下面的代码中对它们进行了更改

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)
list_one=[0,2,5,0,3,7]
列表二=[0,3]
#循环列出一个值
对于清单1中的j:
#循环列出两个值
值=0
对于列表2中的k:
如果浮动(j)1:
值=1
elif值<-1:
值=-1
打印(值)

让我知道如果这为您解决了问题,问题陈述不是很清楚,我已根据我对问题陈述的解释修改了此代码

您的逻辑中有一些问题,我已在下面随附的代码中更改了它们

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)
list_one=[0,2,5,0,3,7]
列表二=[0,3]
#循环列出一个值
对于清单1中的j:
#循环列出两个值
值=0
对于列表2中的k:
如果浮动(j)1:
值=1
elif值<-1:
值=-1
打印(值)
让我知道如果这为您解决了问题,问题陈述不是很清楚,我已经根据我对问题陈述的解释修改了此代码

#除了逻辑错误之外,此代码示例中最大的错误是您对#list#two的混淆使用。显然,列表2必须是一个2元素列表:[最小值,最大值]。任何其他结构都很难理解。如果您愿意,请将其作为一个列表保存,但在开始时,请按如下方式解码列表二:

#然后通过列表_one循环j并应用此逻辑:

if j < min_val:
    value = 1
elif j > max_val:
    value = -1
else:
    value = 0
如果j最大值:
值=-1
其他:
值=0
#所以基本上失去了第二个循环(k循环)。并且一定要删除float()#引用。

#撇开逻辑错误不谈,这个代码示例中最大的错误是混淆了#list#u two的用法。显然,列表2必须是一个2元素列表:[最小值,最大值]。任何其他结构都很难理解。如果您愿意,请将其作为一个列表保存,但在开始时,请按如下方式解码列表二:

#然后通过列表_one循环j并应用此逻辑:

if j < min_val:
    value = 1
elif j > max_val:
    value = -1
else:
    value = 0
如果j最大值:
值=-1
其他:
值=0

#所以基本上失去了第二个循环(k循环)。并且一定要删除float()#引用。

您要检查两次相同的条件…?转换
float
的目的是什么?我想既然列表2中有两个值,它就必须循环两次。如果满足第一个条件,它将中断并结束循环,如果不满足,它将进入下一个条件,如果满足,它将中断,等等。。我猜这不是正确的想法。“浮点”是实际代码的产物,在本例中没有任何意义。你的
elseif
条件与你的
if
条件相同,因此永远不会执行。你检查了两次相同的条件…?转换
浮点
的目的是什么?我一直在想列表2中有两个值,它必须循环两次。如果满足第一个条件,它将中断并结束循环,如果不满足,它将进入下一个条件,如果满足,它将中断,等等。。我猜这不是正确的想法。浮动是实际代码的产物,在本例中没有任何意义。你的
elseif
条件与你的
if
条件相同,因此永远不会执行。谢谢,这很有效,很有意义!下一次,我将尝试发布一些更清晰的问题陈述。谢谢,这很有效,很有意义!下一次,我将尝试发布一些更清晰的问题陈述。