开发者

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

开发者 https://www.devze.com 2024-01-21 09:16 出处:网络 作者: 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&#php39;>

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

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

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

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

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

      以下是代码:

      def remove_empty_columns(data):
       coljavascriptumns_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列表并使用&=运算符来更新要删除的列的集合,可以高效地完成此操作。

      以上就是Python运算符&amp;=使用实例探究的详细内容,更多关于Python运算符&amp;=的资料请关注编程客栈(www.devze.com)其它相关文章!

      0

      精彩评论

      暂无评论...
      验证码 换一张
      取 消