python中if语句判断元素是否存在于列表中——if x: / if x is True: / if x == True: 的区别
用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: 的区别相关推荐
- python 无序列表中第k大元素_查询无序列表中第K小元素
当需要在无需列表中寻找第k小的元素时,一个显然的方法是将所有数据进行排序,然后检索k个元素.这种方法的运行时间为O(n log(n)). 无序列表调用分区函数将自身分解成两个子表,其长度为i和n-i. ...
- Python风格总结:判断元素是否在列表中存在
定义一个列表,并判断元素是否在列表中. test_list = [ 1, 6, 3, 5, 3, 4 ]print("查看 4 是否在列表中 ( 使用循环 ) : ")for i ...
- 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 ...
- 1.统计所输入字符串中单词的个数。2.删除一个list里面重复元素。3.将列表中的偶数变成它的平方,奇数保持不变。4.输入字符串,将其每个字符的ASCII码形成列表并输出.5.猜单词游戏
提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档 题目: 1.统计所输入字符串中单词的个数,单词之间用空格分隔. 代码: print("请输入字符(以空格隔开):" ...
- python if else语句判断输入的数字_Python if else条件控制
Python 条件语句是通过一条或多条语句的执行结果(True 或者 False)来决定执行的代码块. 可以通过下图来简单了解条件语句的执行过程: if 语句 Python中if语句的一般形式如下所示 ...
- python 提取列表元素_Python如何获取列表中元素的索引,python,获得,某个,index
由前面<python判断字符串中是否包含子字符串str(这个很重要,经常被问到,会经常使用)index() find()>( https://blog.csdn.net/jiongta94 ...
- python 列表有几个元素_python怎么向列表中添加多个元素
python的列表是多变灵活的数据结构,向列表中添加元素,可以使用append()方法,或者extend()方法,还可使用insert()方法.insert() 主要用来插入元素,当向列表末尾添加元素 ...
- HashSet中是如何判断元素是否重复的
HashSet不能添加重复的元素,当调用add(Object)方法时候, 首先会调用Object的hashCode方法判hashCode是否已经存在,如不存在则直接插入元素: 如果已存在则调用Obje ...
- python去重复元素_Python实现去除列表中重复元素的方法总结【7种方法】
这里首先给出来我很早之前写的一篇博客,Python实现去除列表中重复元素的方法小结[4种方法],感兴趣的话可以去看看,今天是在实践过程中又积累了一些方法,这里一并总结放在这里. 由于内容很简单,就不再 ...
最新文章
- AWS - Couldformation 初探
- Android 开发者必知的开发资源
- C#反射(Reflection)详解
- Mac OS build caffe2 Error:This file was generated by an older version of protoc which is
- SDM管理路由器要进行的相应配置
- 唱歌如何保持高位置_歌唱中如何找到声音的高位置,内容详解
- fatal error: opencv2/core/cvdef.h: 沒有此一檔案或目錄
- 解决IE6下,给图片加上line-height属性不起作用的方法
- 种树(信息学奥赛一本通-T1423)
- 安装服务器选择什么系统盘,云服务器ecs选择什么系统盘
- 详解Java动态代理机制
- eplan2.5安装教程
- WINPE启动盘的制作
- Cisco2811做端口映射
- dqo变换_基于dqO变换的电压暂降检测方法研究
- 不要奇怪 XP震网病毒缺陷或为2014最大软件漏洞
- 电路设计_RS485总线典型电路介绍
- linux 网桥浅析
- 神经网络学习笔记(一) RBF径向基函数神经网络
- 【开发工具】SVN 忽略指定类型文件或指定名称文件夹