Python运算符&=使用实例探究

 更新时间:2024年01月19日 11:15:04   作者:harvey的网络日志  
这篇文章主要为大家介绍了Python运算符&=使用实例探究,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步,早日升职加薪

写在前面

最近我复习了一些 python 的运算符知识,然后学到了一些新的知识,&=一个全新的运算符。

位运算

你可能已经熟悉位运算,其中&是一个二进制的 AND 运算符。1 & 1True(1),但其他所有1和0的组合都是False(0)。

这个特性给了我们一个思路,那就是用位运算来检查一个整数是奇数还是偶数,因为奇数的最后一位始终是1(你懂的,这里说的是二进制表示):

for x in range(5):
    print(f"{x}:是{'奇数' if x & 1 else '偶数'}")

输出:

0:是偶数
1:是奇数
2:是偶数
3:是奇数
4:是偶数

赋值语句

如果你熟悉赋值运算符,比如+=,你会知道它们是一种有用的简写形式,用于执行一个操作,然后将结果分配回原始对象,即运算符左边的对象。&=也是一样,它执行二进制AND操作,并将值分配回原始对象。

a = 11

a &= 1
print(a)

a &= 0
print(a)

print(type(a))

输出:

1
0
<class 'int'>

我不确定这是巧合还是设计的结果,但是相同的语法也可以用于对两个集合的元素执行AND操作,(感谢Terry Davis在评论中指出)它被称为交集更新运算符,是intersection_update()方法的缩写。它更新原始集合,只保留在另一个集合中也有的每个元素。

但是你是否曾经真正使用过这些&=运算符,或者想象过它们的用途?直到今天,我都没有...

基本上,无论何时你开始有一个假设,你希望接受它...直到发生一个关键事件,证明它是错误的。换句话说,如果你找到了至少一个反例,那么假设就被拒绝了,只有在它似乎仍然合理的情况下才接受假设(例如,当它继续通过你的测试时)。

这是科学方法的典范,如果我还记得我的学校时光的话!

实际上,在数据整理中,这是一个相当常见的用例:我将电子表格表示为Python字典的列表,我想找到并删除所有的空值(如None"")的列。

以下是代码:

def remove_empty_columns(data):
 columns_to_delete = set(data[0].keys())
 for row in data:
 # 只有在最新行的列也为空时保持True(=删除)
 columns_to_delete &= {key for key, value in row.items() if not value}
 for row in data:
 for column in columns_to_delete:
 del row[column]
 return data

当然我可以使用 Pandas,但这样可以避免使用庞大的依赖库,我甚至怀疑Pandas的底层逻辑也是这个原理(如果有兴趣你可以去验证一下)。

一个小技巧

如果你想求多个集合的交集,你可以使用 &将它们链接在一起:

set1 = {1, 2, 3}
set2 = {2}
set3 = {2, 3}
set4 = {1, 2}
set1 &amp;= set2 &amp; set3 &amp; set4
print(set1)

输出:

{2}

写在最后

在 Python 中,&=是位运算符的赋值操作,用于按位与操作并将结果赋值给左操作数。它具有多种实际应用,包括判断整数的奇偶性、执行位运算并更新原始对象,以及对多个集合执行交集更新操作。

此外,我们还提供了一个实际的用例,即在数据整理中使用&=运算符删除仅包含空值值的列。通过迭代处理字典列表并使用&=运算符来更新要删除的列的集合,可以高效地完成此操作。

以上就是Python运算符&amp;=使用实例探究的详细内容,更多关于Python运算符&amp;=的资料请关注脚本之家其它相关文章!

相关文章

  • 浅析Python自带性能强悍的标准库itertools

    浅析Python自带性能强悍的标准库itertools

    itertools是python内置的模块,使用简单且功能强大。这篇文章就主要介绍了通过itertools实现可迭代对象的无限迭代、有限迭代和排列组合。感兴趣的同学可以关注一下
    2021-12-12
  • Python中Selenium库使用教程详解

    Python中Selenium库使用教程详解

    这篇文章主要介绍了Python中Selenium库使用教程详解,本文通过实例代码给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下
    2020-07-07
  • 浅谈python迭代器

    浅谈python迭代器

    这篇文章主要介绍了浅谈python迭代器,具有一定参考价值,需要的朋友可以了解下。
    2017-11-11
  • 基于Pygame实现简单的贪吃蛇游戏

    基于Pygame实现简单的贪吃蛇游戏

    Pygame是一个专门用来开发游戏的Python模块,主要用于开发、设计 2D 电子游戏。本文主要为大家介绍了通过Pygame制作一个简单的贪吃蛇游戏,感兴趣的同学可以关注一下
    2021-12-12
  • Python使用scipy进行曲线拟合的方法实例

    Python使用scipy进行曲线拟合的方法实例

    这篇文章主要给大家介绍了关于Python使用scipy进行曲线拟合的相关资料,Scipy优化和拟合采用的是optimize模块,该模块提供了函数最小值(标量或多维)、曲线拟合和寻找等式的根的有用算法,需要的朋友可以参考下
    2022-05-05
  • Python学习之函数 def

    Python学习之函数 def

    这篇文章主要介绍了Python的函数 def,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2021-10-10
  • 常见的在Python中实现单例模式的三种方法

    常见的在Python中实现单例模式的三种方法

    这篇文章主要介绍了常见的在Python中实现单例模式的三种方法,单例模式在各个编程语言的学习中都是需要掌握的基础知识,需要的朋友可以参考下
    2015-04-04
  • 教你用Python实现一个轮盘抽奖小游戏

    教你用Python实现一个轮盘抽奖小游戏

    Python提供了许多个图像开发界面的库,比如现在主流的Tkinter,wxPython,pyqt5等,三种各有优点,也各有缺点,下面对其分别进行介绍和对比,并编写代码实现一个轮盘转盘抽奖小游戏.需要的朋友可以参考下
    2021-05-05
  • python实现Excel多行多列的转换的示例

    python实现Excel多行多列的转换的示例

    本文主要介绍了python实现Excel多行多列的转换的示例,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2023-03-03
  • 如何更改 pandas dataframe 中两列的位置

    如何更改 pandas dataframe 中两列的位置

    如何更改 pandas dataframe 中两列的位置?今天小编就为大家介绍两种操作方法,希望对大家有所帮助,还等什么?一起跟随小编过来看看吧
    2019-12-12

最新评论