找出一组数中只出现一次的元素

# -*-coding:utf-8-*-
# Python2.7
__author__ = 'LL_YING'
# 找出一组数中只出现一次的元素。注:其它元素都出现过两次。
class Solution():
    def singleNumber(self, A):
        '''
        :param A:a list of integer
        :return:integer
        '''
        return reduce(lambda x,y:x^y, A)
print Solution().singleNumber((1,2,3,4,3,2,1))
'''
数组中只出现一次的元素其余的都出现过两次,使用XOR(异或)就很好解决。
XOR:相同为0,不同为1,这样将数组中的相同的数字异或之后,剩余的数字
就是那个单个的数字。异或运算之间可以互相交换,所以异或的顺序与结果无
关。
Pythonreduce()方法:
reduce(function, iterable[, initializer])第一个参数为调用的函数,参
数二为迭代对象,第三个为可选参数,初始值。函数的作用是参数iterable中的
item顺序迭代调用function例:
def add(x,y): return x + y
>>> reduce(add, range(1, 11))
55
>>> reduce(add, range(1, 11), 20)
75
Python中实现异或为:^
由上面的知识很容易可以解决这个看似复杂的问题。
再学习reduce时候遇见几个和reduce类似的方法:
1filter(function, iterable)
iterable中的item依次执行function(item),将执行结果为True的返回。类型
取决于iterable的类型,如果为string或者元组,则返回相同,此外都为列表。如
functionNone,则iterable的所有item都为False,删除所有元素。
例:
>>> def f(x): return x % 2 != 0 and x % 3 != 0
>>> filter(f, range(2, 25))
[5, 7, 11, 13, 17, 19, 23]
>>> def f(x): return x != 'a'
>>> filter(f, "abcdef")
'bcdef
2map(function, iterable, ...)
iterable中的item依次执行function(item),返回结果为列表。支持多个iterable需要function具有相应数量的参数支持。
例:
>>> def cube(x): return x*x*x
>>> map(cube, range(1, 11))
[1, 8, 27, 64, 125, 216, 343, 512, 729, 1000]
>>> def add(x, y): return x+y
>>> map(add, range(8), range(8))
[0, 2, 4, 6, 8, 10, 12, 14]
'''
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值