首页 > 解决方案 > 当某些值是无数据类型时,如何编写一个函数来将列表列表中的值与额外条件进行比较

问题描述

我想编写一个函数,将列表列表中的值与额外条件进行比较,即当列表中有“无”时,该特定元素总是“匹配”。v_ins 和 r_ins 是列表的列表。v_ins可能有一个None,但r_ins总是有整数。

我已经尝试了以下代码。我不知道在“elif”之后该怎么办。此外,列表只会在列表中的第一个列表中具有值(例如v_ins = [[1,None,1]],但它永远不会像v_ins = [[1,None][None,0]]

def comparestates():
    global v_ins,  r_ins
    if v_ins == r_ins:
        print ("state match")
    elif for j in range (0,len(v_ins[0])):
        "dont know what should come here"
        print ("state match")

v_ins = [[1,None,1]]
r_ins = [[1,0,1]]

comparestates()

预期的结果是打印“状态匹配”,因为 v_ins 的第二个元素中的“无”意味着它将始终与 r_ins 的第二个元素“匹配”。

标签: pythonpython-3.xlistfor-loopnonetype

解决方案


我假设 v_ins 和 r_ins 只有一个列表元素。

def compare(v, r):
    if len(v) != len(r):
        return False
    for i, j in zip(v, r):
        if i is not None and i != j:
            return False
    return True

def comparestates():
    global v_ins, r_ins
    if compare(v_ins[0], r_ins[0]):
        print("state match")
    else:
        print("no match")

v_ins = [[1,None,1]]
r_ins = [[1,0,1]]

comparestates()

推荐阅读