资讯专栏INFORMATION COLUMN

Python中True(真)和False(假)判断详解

89542767 / 567人阅读

  Python中,关于if条件循环函数,主要是涉及到True(真)和False(假)的函数,怎么使用这种条件函数,就是利用True和False去做判断函数的使用呢?下面就给大家详细的解答下。


  前言


  Python中的True和False总是让人困惑,一不小心就会用错,本文总结了三个易错点,分别是逻辑取反、if条件式和pandas.DataFrame.loc切片中的条件式。


  1.True和False的逻辑取反


  在对True和False进行逻辑取反时,不使用~,而要使用not。


  因为在Python中,not才是逻辑取反,而~是按位取反。True和False对应的数值是1和0,~True就相当于对1按位取反,结果是-2,not True的结果才是False。


  print(True)
  print(~True)
  print(not True)


  结果是:


  True


  -2


  False


  类似的,~False的结果是1,not False的结果才是True


  print(False)
  print(~False)
  print(not False)


  结果是:


  False


  -1


  True


  注:Python中~按位取反是按照数的补码取反,即:


  1=>补码00000001=>~按位取反=>补码11111110=>2


  双重否定的结果是这样的


  print(not not True)
  print(~~True)
  print(not~True)
  print(~(not True))


  结果为:


  True


  1


  False


  -1


  对False的双重否定


  print(not not False)
  print(~~False)
  print(not~False)
  print(~(not False))


  结果为:


  False


  0


  False


  -2


  2.if条件语句中的True和False


  Python语言中,if后任何非0和非空(null)值为True,0或者null为False。这点和其他语言不相同,使用多种编程语言时很容易混淆。所以即使判断条件是一个负数,也是按照True处理,不会执行else分支。来看例子:


  if(-2):
  print('a')
  else:
  print('b')


  果为:a


  如果使用了~对True或False取反,则得不到想要的结果:


  if(~True):#~True==-2
  print('a')
  else:
  print('b')


  结果为:a


  只有用not来取反,才能达到逻辑取反的效果:


  if not True:
  print('a')
  else:


  print('b')


  结果为:b


  3.pandas.DataFrame.loc中的否定


  pandas.DataFrame.loc官方文档中是这么说的


  Access a group of rows and columns by label(s)or a boolean array.


  可以使用布尔列表作为输入,包括使用一个条件式来返回一个布尔列表,例:


  首先创建一个DataFrame


  import pandas as pd
  df=pd.DataFrame([[1,2],[4,5],[7,8]],
  index=['cobra','viper','sidewinder'],
  columns=['max_speed','shield'])
  df


  使用条件式来筛选出shield大于6的数据

  df.loc[df['shield']>6]


  筛选出shield域小于等于6的数据,可以

  df.loc[df['shield']<=6]


  也可以用

  ~df.loc[~(df['shield']>6)]


  另一个例子,筛选出index中不包含er两个字母的数据

  df.loc[~df.index.str.contains('er')]


  需要注意的是,在这里使用df.index.str.contains('er')作为条件筛选时,返回的是pd.Series。


  而在pd.Series中,~操作符重载了,它对布尔类型数据和对数值类型数据的处理分别是逻辑取反和按位取反。

  df.index.str.contains('er')


  的结果是:

  array([False,True,True])


  对布尔类型的pd.Series使用~取反,是逻辑取反


 ~pd.Series([False,True,False])


  结果为


  True


  False


  True


  dtype:bool


  而如果对数值型的pd.Series使用~取反,则是按位取反


  ~pd.Series([1,2,3])


  结果为


  -2


  -3


  -4


  dtype:int64


  总结


  综上所述,上述就给大家介绍完毕了,希望可以给大家带来帮助。

文章版权归作者所有,未经允许请勿转载,若此文章存在违规行为,您可以联系管理员删除。

转载请注明本文地址:https://www.ucloud.cn/yun/128364.html

相关文章

  • Python 进阶之路 (四) 先立Flag, 社区最全的Set用法集锦

    摘要:与上面的操作类似,可以使用多种运算符和方法来更改集合的内容。通过修改集合元素方法运算符用法通过修改集合和作用是向集合中添加中所有不存在的元素。 Set是什么 大家好,恰逢初五迎财神,先预祝大家新年财源滚滚!!在上一期详解tuple元组的用法后,今天我们来看Python里面最后一种常见的数据类型:集合(Set) 与dict类似,set也是一组key的集合,但不存储value。由于key不...

    nodejh 评论0 收藏0
  • Python基础之控制结构

    摘要:基础之控制结构学习目标代码块与缩进条件语句语句语句的嵌套断言循环循环循环中断循环控制语句综合嵌套列表解析式基础相关链接学习目标是简洁易学面向对象的编程语言。 Py...

    liaosilzu2007 评论0 收藏0
  • js判断json数据的

    摘要:在项目开发过程中,很多时候需要处理数据,在处理的过程中,难免会对数据进行真假的判断,下面是总结的几点例子,以备使用数据真假输出假空字符串真假输出假数字真假输出真数字真假输出假非数字的数字真假输出真不在对象中第一层的属性名真假输出假不在对象中 在项目开发过程中,很多时候需要处理json数据,在处理的过程中,难免会对数据进行真假的判断,下面是总结的几点例子,以备使用 json数据 cons...

    Little_XM 评论0 收藏0
  • [零基础学python]复习if语句

    摘要:在学习语句的时候,对编程的基础知识了解的还不是很多,或许没有做什么太复杂的东西。可以通过一个内置函数来判断一个条件的结果还是。有朋友需要看完整教程内容,请点击零基础学,这里会及时更新,并且有完整的目录结构,更吸纳了朋友们提出的意见和建议。 看官是否记得,在上一部分的时候,有一讲专门介绍if语句的:从if开始语句的征程。在学习if语句的时候,对python编程的基础知识了解的还不是很多,...

    array_huang 评论0 收藏0
  • JavaScript小细节点罗列(1)

    摘要:一旦属性引用结束了,这个新创建的对象就会被销毁。回到属性访问表达式,如果表达式后跟随和标识符,就会查找这个标识符所指定的属性的值没并将其作为整个表达式返回的值。而且运算符只能删除自有属性,不能删除继承属性。真真真假真真真真真假真假未完待续 属性访问表达式 众所周知,JavaScript为属性的访问定义了两种语法方式: 表达式.标识符 表达式(指定对象),标识符(指定需要访问的属性的名称...

    I_Am 评论0 收藏0

发表评论

0条评论

最新活动
阅读需要支付1元查看
<