条件陈述的奇怪行为?

时间:2017-09-02 12:42:14

标签: python list if-statement conditional

dummy_list = ["1", "2", "3", "4"]

if 1 in dummy_list is [0]:
    print ("it is the first element")
else:
    print ("no it is not the first element")

我正在尝试检查列表,确定变量在列表中的位置是否在指定的区域设置内。现在,尽管事实上[0] IS 1,(我通过以下方式验证了这一点):

print (dummy_list[0]) 

哪个返回1;我很困惑,为什么条件语句会另外说明。

1 个答案:

答案 0 :(得分:2)

in是与is分开的测试;你chained the comparisons,Python执行测试:

(1 in dummy_list) and (dummy_list is [0])

两项测试都失败了。 1中没有dummy_list整数,只有"1"个字符串对象。并且dummy_list[0]表达式生成的列表不完全相同;后者将始终生成一个新的列表对象,因此is identity test总是失败。

您无法对in测试做出断言;你无法测试收容所匹配的索引。只需显式测试索引

if dummy_list[0] == "1":

或如果dummy_list可以是空列表,请添加测试以确保它不为空:

if dummy_list and dummy_list[0] == "1":