用x in list可以判断一个元素是否在list中,存在则返回True,不存在则返回False。所以我一开始就想直接用 == True来判断。这样运行不会报错,但是却不能正确判断、没有输出结果。这个时候Pycharm提示:Comparison to True should be 'if cond is True' or 'if cond:' .  意思是:和True的比较应该写成 is True 或者 if默认判断,不能用 == True 的形式。

于是我又换成了 is True的写法。这样运行同样没有报错,但还是不能正确判断、没有输出Yes。后来发现不是is True这种表达有问题,而是应该加一个括号,因为x in list在这里代表的是一个值。

最后我换成了if默认判断的写法。这样终于可以成功判断了。

在StackOverflow上面看到了一个关于这个问题的讨论。我根据自己的理解简单翻译总结了里面几个大佬说的重点。

实际上,True和False并不只有一种含义。它不仅仅可以被看做一个简单的布尔类型的值,它还可以被当成每一个对象都具有的属性。就比如'123',[1,2,3]等等,大多数对象都是属性为True的真值;False、None、数值为0的数字、空字符串列表元组字典等等,规定了一小部分对象是属性为False的值。所以,在用if语句的时候要先想清楚自己判断的是哪一种含义的True和False。

if cond: 区分的是属性值。也就是不光赋值为True 的值会被判断为对,非0数字、非空列表等属性为True的值也都会被判断为对。在你确定自己判断的值赋值只有True和False时,或你要判断的就是属性值时,可以使用if cond: 达到想要的效果。

if cond is True: 区分的是单纯的True和False赋值。属性为真的值不会通过判断。但这个表达不够简洁明了,而且像上面x in list这种情况还需要加括号,在这方面不如if cond:。

下面是StackOverflow的原帖:

https://stackoverflow.com/questions/20420934/if-x-vs-if-x-true-vs-if-x-is-true

python中if语句判断元素是否存在于列表中——if x: / if x is True: / if x == True: 的区别相关推荐

  1. python 无序列表中第k大元素_查询无序列表中第K小元素

    当需要在无需列表中寻找第k小的元素时,一个显然的方法是将所有数据进行排序,然后检索k个元素.这种方法的运行时间为O(n log(n)). 无序列表调用分区函数将自身分解成两个子表,其长度为i和n-i. ...

  2. Python风格总结:判断元素是否在列表中存在

    定义一个列表,并判断元素是否在列表中. test_list = [ 1, 6, 3, 5, 3, 4 ]print("查看 4 是否在列表中 ( 使用循环 ) : ")for i ...

  3. python3判断变量存在_Python3基础 list in/not in 判断一个变量是否在列表中存在

    Python : 3.7.0 OS : Ubuntu 18.04.1 LTS IDE : PyCharm 2018.2.4 Conda : 4.5.11 typesetting : Markdown ...

  4. 1.统计所输入字符串中单词的个数。2.删除一个list里面重复元素。3.将列表中的偶数变成它的平方,奇数保持不变。4.输入字符串,将其每个字符的ASCII码形成列表并输出.5.猜单词游戏

    提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档 题目: 1.统计所输入字符串中单词的个数,单词之间用空格分隔. 代码: print("请输入字符(以空格隔开):" ...

  5. python if else语句判断输入的数字_Python if else条件控制

    Python 条件语句是通过一条或多条语句的执行结果(True 或者 False)来决定执行的代码块. 可以通过下图来简单了解条件语句的执行过程: if 语句 Python中if语句的一般形式如下所示 ...

  6. python 提取列表元素_Python如何获取列表中元素的索引,python,获得,某个,index

    由前面<python判断字符串中是否包含子字符串str(这个很重要,经常被问到,会经常使用)index() find()>( https://blog.csdn.net/jiongta94 ...

  7. python 列表有几个元素_python怎么向列表中添加多个元素

    python的列表是多变灵活的数据结构,向列表中添加元素,可以使用append()方法,或者extend()方法,还可使用insert()方法.insert() 主要用来插入元素,当向列表末尾添加元素 ...

  8. HashSet中是如何判断元素是否重复的

    HashSet不能添加重复的元素,当调用add(Object)方法时候, 首先会调用Object的hashCode方法判hashCode是否已经存在,如不存在则直接插入元素: 如果已存在则调用Obje ...

  9. python去重复元素_Python实现去除列表中重复元素的方法总结【7种方法】

    这里首先给出来我很早之前写的一篇博客,Python实现去除列表中重复元素的方法小结[4种方法],感兴趣的话可以去看看,今天是在实践过程中又积累了一些方法,这里一并总结放在这里. 由于内容很简单,就不再 ...

最新文章

  1. AWS - Couldformation 初探
  2. Android 开发者必知的开发资源
  3. C#反射(Reflection)详解
  4. Mac OS build caffe2 Error:This file was generated by an older version of protoc which is
  5. SDM管理路由器要进行的相应配置
  6. 唱歌如何保持高位置_歌唱中如何找到声音的高位置,内容详解
  7. fatal error: opencv2/core/cvdef.h: 沒有此一檔案或目錄
  8. 解决IE6下,给图片加上line-height属性不起作用的方法
  9. 种树(信息学奥赛一本通-T1423)
  10. 安装服务器选择什么系统盘,云服务器ecs选择什么系统盘
  11. 详解Java动态代理机制
  12. eplan2.5安装教程
  13. WINPE启动盘的制作
  14. Cisco2811做端口映射
  15. dqo变换_基于dqO变换的电压暂降检测方法研究
  16. 不要奇怪 XP震网病毒缺陷或为2014最大软件漏洞
  17. 电路设计_RS485总线典型电路介绍
  18. linux 网桥浅析
  19. 神经网络学习笔记(一) RBF径向基函数神经网络
  20. 【开发工具】SVN 忽略指定类型文件或指定名称文件夹

热门文章

  1. VMD安装(无root权限不联网不配置环境变量)
  2. 自然语言处理(NLP):20 基于知识图谱的智能问答系统
  3. linux 看当前目录,Linux下 查看当前目录的所有文件
  4. Python值传递和引用传递(详细分析)
  5. 第一节:Android蓝牙系统
  6. redis缓存穿透处理
  7. 北师19春计算机应用基础,北师19春《大学英语(三)》在线考核试卷【参考答案】...
  8. “最美司机”吴斌家属:肇事方欠一声道歉
  9. 常用人体表面积计算公式(汇总)
  10. 机器视觉系统中常用工业相机的分类