Как запрограммировать функцию, которая сравнивает значения в списке списка с дополнительным условием, когда некоторые значения не имеют тип данных - PullRequest
0 голосов
/ 12 июня 2019

Я хочу запрограммировать функцию, которая сравнивает значения в списке списка с дополнительным условием, что, когда в списке есть «Нет», этот конкретный элемент всегда «совпадает».v_ins и r_ins - список списков.v_ins может содержать None, но r_ins всегда будет содержать целые числа.

Я пробовал следующий код.Я не знаю, что делать после "элифа".Кроме того, списки будут иметь значения только в первом списке в списке (например, 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()

Ожидаемый результат - "соответствие состояния" напечатанопотому что «None» во втором элементе v_ins означает, что он всегда будет «совпадать» со вторым элементом r_ins.

1 Ответ

1 голос
/ 12 июня 2019

Я предположил, что у 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()
...