Python实现的生成格雷码功能示例


Posted in Python onJanuary 24, 2018

本文实例讲述了Python实现的生成格雷码功能。分享给大家供大家参考,具体如下:

问题

在一组数的编码中,若任意两个相邻的代码只有一位二进制数不同, 则称这种编码为格雷码(Gray Code),请编写一个函数,使用递归的方法生成N位的格雷码。

解决方法:

给定一个整数n,请返回n位的格雷码,顺序为从0开始。

测试样例:

返回:["0","1"]

题目很刁钻,题干很简洁,样例很高冷……

Python实现的生成格雷码功能示例

其中有一些微妙的关系

Python实现的生成格雷码功能示例

发现了这个规律之后,代码自然就很好写了

# -*- coding:utf-8 -*-
class GrayCode:
  def getGray(self, n):
    # write code here
    global maxn
    maxn = n
    return GrayCode.getGrace(self, ['0', '1'], 1)
  def getGrace(self, list_grace, n):
    global maxn
    if n >= maxn:
      return list_grace
    list_befor, list_after = [], []
    for i in xrange(len(list_grace)):
      list_befor.append('0' + list_grace[i])
      list_after.append('1' + list_grace[-(i + 1)])
    return GrayCode.getGrace(self, list_befor + list_after, n + 1)
gary = GrayCode()
print "三水点靠木测试结果:"
print gary.getGray(3)

运行结果:

Python实现的生成格雷码功能示例

更多关于Python相关内容可查看本站专题:《Python字符串操作技巧汇总》、《Python数据结构与算法教程》、《Python函数使用技巧总结》、《Python入门与进阶经典教程》及《Python文件与目录操作技巧汇总》

希望本文所述对大家Python程序设计有所帮助。

Python 相关文章推荐
Python使用QRCode模块生成二维码实例详解
Jun 14 Python
Python+tkinter使用80行代码实现一个计算器实例
Jan 16 Python
python字典快速保存于读取的方法
Mar 23 Python
Numpy array数据的增、删、改、查实例
Jun 04 Python
对python内置map和six.moves.map的区别详解
Dec 19 Python
Python替换月份为英文缩写的实现方法
Jul 15 Python
python提取照片坐标信息的实例代码
Aug 14 Python
Django通过dwebsocket实现websocket的例子
Nov 15 Python
如何更改 pandas dataframe 中两列的位置
Dec 27 Python
将python字符串转化成长表达式的函数eval实例
May 11 Python
深入浅析python 中的self和cls的区别
Jun 20 Python
浅谈python处理json和redis hash的坑
Jul 16 Python
Python使用requests及BeautifulSoup构建爬虫实例代码
Jan 24 #Python
Python3结合Dlib实现人脸识别和剪切
Jan 24 #Python
深入浅析Python中的yield关键字
Jan 24 #Python
Python3.6安装及引入Requests库的实现方法
Jan 24 #Python
pycharm+django创建一个搜索网页实例代码
Jan 24 #Python
Python数据类型中的“冒号“[::]——分片与步长操作示例
Jan 24 #Python
Sublime开发python程序的示例代码
Jan 24 #Python
You might like
php 防止单引号,双引号在接受页面转义
2008/07/10 PHP
PHP抽象类 介绍
2012/06/13 PHP
探讨如何使用SimpleXML函数来加载和解析XML文档
2013/06/07 PHP
php对包含html标签的字符串进行截取的函数分享
2014/06/19 PHP
php连接微软MSSQL(sql server)完全攻略
2016/11/27 PHP
php简单中奖算法(实例)
2017/08/15 PHP
TP5框架请求响应参数实例分析
2019/10/17 PHP
jquery中防刷IP流量软件影响统计的一点对策
2011/07/10 Javascript
现代 JavaScript 开发编程风格Idiomatic.js指南中文版
2014/05/28 Javascript
jquery通过扩展select控件实现支持enter或focus选择的方法
2015/11/19 Javascript
[原创]Bootstrap 中下拉菜单修改成鼠标悬停直接显示
2016/04/14 Javascript
jQuery自适应轮播图插件Swiper用法示例
2016/08/24 Javascript
Vue.js每天必学之指令系统与自定义指令
2016/09/07 Javascript
TableSort.js表格排序插件使用方法详解
2017/02/10 Javascript
javascript过滤数组重复元素的实现方法
2017/05/03 Javascript
AngularJS实现controller控制器间共享数据的方法示例
2017/10/30 Javascript
在一个页面实现两个zTree联动的方法
2017/12/20 Javascript
vue获取当前点击的元素并传值的实例
2018/03/09 Javascript
详解Vue项目部署遇到的问题及解决方案
2019/01/11 Javascript
jQuery无冲突模式详解
2019/01/17 jQuery
手把手教你 CKEDITOR 4 实现Dialog 内嵌 IFrame操作详解
2019/06/18 Javascript
vue 解决文本框被键盘遮住的问题
2019/11/06 Javascript
python改变日志(logging)存放位置的示例
2014/03/27 Python
Python的Django框架中的select_related函数对QuerySet 查询的优化
2015/04/01 Python
使用Python快速制作可视化报表的方法
2019/02/03 Python
Python 3.8新特征之asyncio REPL
2019/05/28 Python
比利时香水网上商店:NOTINO
2018/03/28 全球购物
银行毕业实习自我鉴定
2013/09/19 职场文书
教师个人剖析材料
2014/02/05 职场文书
双语教学实施方案
2014/03/23 职场文书
优秀毕业生就业推荐信
2014/05/22 职场文书
计算机售后服务承诺书
2014/05/30 职场文书
2015年消费者权益日活动总结
2015/02/09 职场文书
公司员工体检通知
2015/04/21 职场文书
《普罗米修斯》教学反思
2016/02/22 职场文书
iOS 16进一步确认,一共支持16款iPhone
2022/04/28 数码科技