异或、左移

按位异或的3个特点:

  •  0^0=0,0^1=1  0异或任何数=任何数
  • 1^0=1,1^1=0  1异或任何数-任何数取反
  •  任何数异或自己=把自己置0

示例:给定一个整数数组,除了一个元素外,每个元素都会出现两次。 找到那一个。

def singleNumber(self, nums):
    res = 0
    for num in nums:
        res ^= num
    return res
#也可以用如下方法实现
def singleNumber(self, nums):
    return reduce(operator.xor, nums)

reduce()函数是Python内置的一个高阶函数。

reduce()函数接收的参数和 map()类似,一个函数 f,一个list,但行为和 map()不同,reduce()传入的函数 f 必须接收两个参数,reduce()对list的每个元素反复调用函数f,并返回最终结果值。

filter()函数是 Python 内置的另一个有用的高阶函数,filter()函数接收一个函数 f 一个list,这个函数 f 的作用是对每个元素进行判断,返回 True或 False,filter()根据判断结果自动过滤掉不符合条件的元素,返回由符合条件元素组成的新list。

map()函数接收两个参数,个函数 f 一个list,map将传入的函数依次作用到序列的每个元素,并把结果作为新的list回。

>>> foo = [2, 18, 9, 22, 17, 24, 8, 12, 27]
>>>
>>> print filter(lambda x: x % 3 == 0, foo) # 滤波操作
[18, 9, 24, 12, 27]
>>>
>>> print map(lambda x: x * 2 + 10, foo)
[14, 46, 28, 54, 44, 58, 26, 34, 64]
>>>
>>> print reduce(lambda x, y: x + y, foo) # 传入的函数有x,y两个参数
139

左移的特点:

在没有溢出的前提下


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值