问题描述:
有一个整数列表,里面有一个数字只出现了一次,而其他数字都出现了4次,要求查找这个只出现了一次的数字。
思路要点:
一个数字和自己异或一次会变成0。
参考代码:
import
random
def
onlyYou
(lst):
r = lst[0]
for
item
in
lst[1:]:
r = r ^ item
return
r
for
i
in
range
(100000):
lst = random.sample(
range
(1000), 8)
lst = lst[:-1]*4 + lst[-1:]
random.shuffle(lst)
# 传统套路
r = onlyYou(lst)
# reduce,函数式编程
rr = reduce(
lambda
x,y:x^y, lst, 0)
if
lst.count(r)!=1
or
lst.count(rr)!=1:
print
(lst)
print
(r, rr)
运行后程序无输出,说明思路和代码正确。
----------相关阅读----------
详解Python中的位运算符规则、原理与用法
----------喜大普奔----------
1、继《
Python程序设计基础