Python按位异或运算符^应用案例一则:查找只出现一次的数字

来源:互联网 发布:c 网络编程卷1 编辑:程序博客网 时间:2024/06/05 20:26

问题描述:有一个整数列表,里面有一个数字只出现了一次,而其他数字都出现了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程序设计基础》(2017年9月第5次印刷)、《Python程序设计(第2版)》(2017年9月第4次印刷)、《Python可以这样学》(2017年7月第3次印刷)系列图书之后,董付国老师新书《Python程序设计开发宝典》已于2017年8月1日在清华大学出版社出版,并于2017年9月进行了第2次印刷。为庆祝新书《Python程序设计开发宝典》全面上架,清华大学出版社联合“赣江图书专营”淘宝店推出特价优惠活动,《Python程序设计开发宝典》原价69元,新书上架期间超低价39.8元,可以复制下面的链接使用浏览器打开查看图书详情和购买:

https://detail.tmall.com/item.htm?spm=a1z10.3-b-s.w4011-14464369246.84.46f16db0roWfX4&id=557107249812&rn=339cbc9df2bac424664103917dedfbd2&abbucket=8&tbpm=3


2、董付国老师6本Python系列图书阅读指南


阅读全文
0 0