python 比特输出_Python小碗菜:and/or 与 amp;/| 到底有什么区别
前言
在对Python的学习过程中,经常有人会问:对于逻辑运算,and/or 与 &/| 的区别在哪里?用哪个好?真的是哪个输入简单一点用哪个吗?其实他们是有内在区别的:and和or判断的是整个对象,而&和| 判断的是每个对象中的比特位。如果一脸懵逼请往下看。
提示:为方便快捷地解决问题,本文仅介绍主要区别,并非全面介绍
一、什么是逻辑运算?
抄一下百度百科:
逻辑运算又称布尔运算。布尔用数学方法研究逻辑问题,成功地建立了逻辑演算。他用等式表示判断,把推理看作等式的变换。这种变换的有效性不依赖人们对符号的解释,只依赖于符号的组合规律 。这一逻辑理论人们常称它为布尔代数。20世纪30年代,逻辑代数在电路系统上获得应用,随后,由于电子技术与计算机的发展,出现各种复杂的大系统,它们的变换规律也遵守布尔所揭示的规律。逻辑运算 (logical operators) 通常用来测试真假值。最常见到的逻辑运算就是循环的处理,用来判断是否该离开循环或继续执行循环内的指令。
二、两者区别
1.and/or用于整个对象
在Python中所有的“非零”对象都会被会被判定为True。
a = 'hello world!'
b = ''
c = 0
print(bool(a))
print(bool(b))
print(bool(c))
print(bool(a and b))
print(bool(a or b))
print(bool(a and c))
print(bool(a or c))
输出:
True
False
False
False
True
False
True
2.&/| 用于每个对象中的比特位
当使用&和|对整个单位进行操作时,判断的是单位元素的比特,可以说是将每个比特用and或or来进行比较。所以会出现如下奇怪的现象:
print(43&45)
输出:
41
如果我们把数字分解为比特,就能知道其中的原因了:
print(bin(43))
print(bin(45))
print(bin(43&45))
print(bin(41))
输出:
0b101011
0b101101
0b101001
0b101001
可以看到,&是将比特位进行逐一比较。当然,如果我们输入一个字符串会直接报错:
print('hello' & 'world')
输出:
Traceback (most recent call last):File "<stdin>", line 1, in <module>
TypeError: unsupported operand type(s) for &: 'str' and 'str'
三、实际运用
只说它们的区别可能印象并没有那么深刻,我这里举一个实际运用的例子可能就会恍然大悟。
先创建一个随机数组:
import numpy as np
data = np.random.randint(0,10,10)
data
输出:
array([8, 6, 5, 0, 4, 1, 0, 2, 4, 5])
用&统计大于3且小于7的数:
(data>3) & (data<7)
输出:
array([False, True, True, False, True, False, False, False, True,True])
很简单也很快的就能实现。如果我们用and会出现什么情况呢?
(data>3) and (data<7)
输出:
ValueError: The truth value of an array with more than one element is ambiguous. Use a.any() or a.all()
显然会报错,回顾上面所说的:and和or用于对象整体,&和| 用于对象的组成部分,就可以很清楚的理解了。
总结
本文属于Python小碗菜系列,主要是笔者平时碰到和想到的Python中小知识和小技巧,后续也会持续更新,希望大家喜欢。
往期文章:
不知者:pandas:使用函数批量处理数据(map、apply、applymap)zhuanlan.zhihu.com
不知者:pandas: DataFrame 将时间按小时分钟等方式聚合zhuanlan.zhihu.com
不知者:pandas:快速处理字符串方法zhuanlan.zhihu.com
更多内容敬请关注我的CSDN博客:
python 比特输出_Python小碗菜:and/or 与 amp;/| 到底有什么区别相关推荐
- python数据输出_python数据输出
下面的是我的code, 但是最后的结果全部都是others,有哪位大神能帮忙看产生输出的最简单方法是使用print语句,可以通过用逗号分隔零个或多个表达式.这个函数传递表达式转换为一个字符串,如下结果 ...
- python怎么输出_python输出语句怎么用
Python中输出语句是print语句 1.逗号分隔符 在Python中print语句可根据sys.stdout中包含的文件生成输出,它接受一个逗号分隔的对象表,如下实例:x = 1 y = 2 z ...
- python怎么输出_Python如何输出整数
Python输出整数的方法: 先使用str()函数将数字转换成字符串赋值给变量i,再用"if i.count('.') == 0"语句判断字符串中是否没有小数点,如果是则输出这个字 ...
- python print 换行_Python小课堂第21课:规整一下我们的输出之打印格式化与字符串...
整齐的输出,不仅美观,还能方便我们更容易的定位问题的重点.所以我们有必要将我们的输出内容美化一下! 请点击右上角"关注"按钮关注我们,跟着木辛老师深入浅出的掌握输出格式化的方法吧! ...
- python如何横向输出_PYTHON小工具-竖排表格内容转横向输出
工作中常出现某某人发来的表格都是放在一列的情况,这种时候真的想把对方按在地上摩擦,但是又没办法,数据已经给到自己了,只能硬着头皮一点一点的改了. 不过呢,用python得话可以很容易就搞定这个问题 首 ...
- python多线程输出_Python多线程
多线程基础概念 并行与并发 并行:同时处理多个任务,必须在多核环境下 一段时间内同时处理多个任务,单核也可以并发 并发手段 线程:内核空间的调度 进程:内核空间的调度 协程:用户空间的调度 线程可以允 ...
- python条件输出_python基础(二)条件判断、循环、格式化输出
继续上一篇,今天主要总结一下条件判断.循环.格式化输出 一.条件判断 python中条件判断使用if else来判断,多分支的话使用if elif ... else,也就是如果怎么怎么样就怎么怎么样, ...
- python不等于_Python小课堂|注释+运算符
注释 确保对模块, 函数, 方法和行内注释使用正确的风格 Python中的注释有单行注释和多行注释: Python中单行注释以 # 开头,例如: # 这是一个注释 print("Hello, ...
- python使用技巧_python小技巧
平时开发中,一些使用的技巧,记录一下,持续更新---- 1.当函数默认参数为可变对象时,每次调用函数,是不会重新创建对象的 示例代码1: def ddd(a,b=[]): b.append(a)ret ...
最新文章
- Intel不争气,7nm再延后两年将彻底落败
- Shiro 核心功能案例讲解 基于SpringBoot 有源码
- MySQL笔记14:常用命令
- 解析 | 如何从频域的角度解释CNN(卷积神经网络)?
- RTT线程管理篇——RTT什么时候调度
- bypass最新版d盾mysql_Bypass D盾_IIS防火墙SQL注入防御(多姿势)
- 手把手教你云服务器如何搭建typecho博客网站(包括配置免费SSL证书)
- Java面试题超详细讲解系列之九【SQL语句篇】
- 摄影测量——EPS三维测图软件正射影像+三维模型后期成果处理(附软件安装包+学习视频)
- 20本适合C/C++程序员入门的C/C++编程书籍PDF版
- Google Chrome谷歌浏览器繁体字修改为简体字
- 度分秒转度数和度数转度分秒
- DAO层和Service层的究极理解--这波我在大气层
- Qt打包程序报错“应用程序无法正常启动(0xc000007b)”
- python朋友圈图片_教你如何用Python处理图片九宫格,炫酷朋友圈
- GeeM2引擎弹出装备显示框的设置方法
- 产品运动动画用什么软件做的_3C产品渲染用什么软件好?Keyshot,工业设计必备!...
- HDU 6095 Rikka with Competition
- python写qq群机器人怎么弄_python打造自由DIY 群聊机器人
- 软件分享|eCognition9.0下载
热门文章
- 95-910-150-源码-FlinkSQL-Flink SQL 的元数据管理
- 【Spring】Spring autowire-candidate解决注入的时候有多个符合的bena
- 【高并发】JUC中等待多线程完成的工具类CountDownLatch
- es system call filters failed to install; check the logs and fix your configuration or disable syste
- SpringBoot:Spring boot 主程序的功能SpringApplication.run(启动流程)
- 【SpringBoot】spring boot + mybatis + druid
- java输出object object_js控制台显示[object Object]问题
- SpringBoot启动时实现自动执行代码的几种方式讲解
- Springboot 配置文件、隐私数据脱敏的最佳实践(原理+源码)
- 带你深入了解 GitLab CI/CD 原理及流程