不支持的操作数类型 - :' list'和' int':如何比较列表项?

时间:2015-10-12 13:34:22

标签: python list

我要做的是将国家与前两个国家进行比较,看看它们是否完全不同。我很难将值存储在列表中然后进行比较。我已经尝试了字符串,但似乎无法正确使用它。

不支持的操作数类型 - :' list'和' int' 是我得到的错误。解决这个问题的任何提示?

def purchase(amount, day, month, country):
    global history, owed, last_country
    owed += amount
    history += [(days_in_months(month - 1) + day)]
    last_country += [country]
    if history[len(history) - 2] > history[len(history) - 1]:
        return str(error)
    elif all_three_different(country, last_country[len(last_country)-1], last_country[len(last_country-2)]) == True:
        return str(error)
    else:
        return True

1 个答案:

答案 0 :(得分:1)

您正试图从列表中减去2:

last_country[len(last_country-2)]

请注意括号! last_country-2表达式是 len()次调用中的。你可能打算这样做:

last_country[len(last_country)-2]

你根本不需要使用长度;只是负面指数:

last_country[-2]

这可以获得完全相同的值;列表中的1但最后一个值。索引时会自动从列表长度中减去负索引。

您不需要做的其他事情就是使用== True;这就是if / elif声明已经为你做的事情;把它关掉:

if history[-2] > history[-1]:
    return str(error)
elif all_three_different(country, last_country[-1], last_country[-2]):
    return str(error)
else:
    return True