【问题标题】:Python: Search into list failPython:搜索列表失败
【发布时间】:2015-04-21 10:19:34
【问题描述】:

谁能解释这段代码发生了什么?

def some_function(value):
    my_list = [value, [True, "Some text"]]

    if True in my_list:
        return "yes"
    else:
        return "no"

>>> print(function(1))
yes

>>> print(function("1"))
no

如果 value = 1,我得到“是”,这种行为是正确的。但如果值是某个字符串,则结果为“否”。我认为这应该始终是“是”。我用的是 Python3.4

【问题讨论】:

  • @Tichodroma: 标题编辑错误 - 问题说 ""value = 1, I got "yes" and this behavior is correct",暗示问题的问题是不是为什么1 == True
  • @Eric。同意。但是现在的标题也是错误的。该列表与问题无关。
  • True 不在my_list 中,但在my_list[1] 中。

标签: python list search


【解决方案1】:

记住

1 == True
"1" != True

原来如此

[1, [True, "Some text"]]

包含True,而

["1", [True, "Some text"]]

没有。

编辑:子列表是否包含True无关紧要。

【讨论】:

  • 哦,是的,我明白了!谢谢。
【解决方案2】:

您的列表包含两项 - value[True, "Some text"]

value1时,value等于True,所以结果为yes

value'1'时,这两项都不等于True,所以结果为no


听起来您假设 x in list 也应该查看所有子列表 - 事实并非如此

【讨论】:

  • 哦,我认为在列出所有元素中:value、True 和“some text” 并且在控制台中应该是“yes”,因为 True在元素中。
  • @rec99:不。 True in [1, [True, 3]] 为假,但True in [1, True, 3] 为真
猜你喜欢
  • 1970-01-01
  • 2013-03-06
  • 2017-09-21
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2019-01-14
相关资源
最近更新 更多