python--使用递归优雅实现列表相加和进制转换
咦,好像坚持了一段时间,感觉又有新收获啦。
# coding: utf-8
class Stack:
def __init__(self):
self.items = []
# 是否为空
def is_empty(self):
return self.items == []
# 进栈
def push(self, item):
self.items.append(item)
# 出栈
def pop(self):
return self.items.pop()
# 返回栈顶值,不改变栈
def peek(self):
return self.items[len(self.items) - 1]
# 返回栈长度
def size(self):
return len(self.items)
def list_sum(my_list):
print(my_list)
if len(my_list) == 1:
return my_list[0]
else:
print(my_list[0], my_list[1:])
return my_list[0] + list_sum(my_list[1:])
print('=======recursion list add=========')
print(list_sum([1, 3, 5, 7, 9]))
s = Stack()
def to_base_str(num, base):
base_str = '0123456789ABCDEF'
div = num // base
mod = num % base
s.push(base_str[mod])
if div == 0:
res = ''
while not s.is_empty():
res += s.pop()
return res
else:
return to_base_str(div, base)
print('=======recursion base trans=========')
print('1456 from 10 to 16: ', to_base_str(1456, 16))
print('32 from 10 to 2: ', to_base_str(32, 2))
输出:
C:\Users\Sahara\.virtualenvs\untitled\Scripts\python.exe D:/test/python_recursion.py =======recursion list add========= [1, 3, 5, 7, 9] 1 [3, 5, 7, 9] [3, 5, 7, 9] 3 [5, 7, 9] [5, 7, 9] 5 [7, 9] [7, 9] 7 [9] [9] 25 =======recursion base trans========= 1456 from 10 to 16: 5B0 32 from 10 to 2: 100000 Process finished with exit code 0
python--使用递归优雅实现列表相加和进制转换的更多相关文章
- 使用python解决算法和数据结构--使用栈实现进制转换
可以将10进制数据转换成2进制,8进制,16进制等. 晚上练练算法和数据结构哈. # coding = utf-8 class Stack: def __init__(self): self.item ...
- python 实现进制转换(二进制转十进制)
摘自https://baike.baidu.com/item/%E5%8D%81%E8%BF%9B%E5%88%B6%E8%BD%AC%E4%BA%8C%E8%BF%9B%E5%88%B6 pytho ...
- Python内置进制转换函数(实现16进制和ASCII转换)
在进行wireshark抓包时你会发现底端窗口报文内容左边是十六进制数字,右边是每两个十六进制转换的ASCII字符,这里使用Python代码实现一个十六进制和ASCII的转换方法. hex() 转换一 ...
- Python 进制转换、位运算
一.进制转换 编程用十进制,十进制转换为二进制.八进制.十六进制 In [135]: bin(23) Out[135]: '0b10111' In [136]: oct(23) Out[136]: ' ...
- python 数据类型、进制转换
数据类型 存储单位 最小单位是bit,表示二进制的0或1,一般写作b 最小的存储单位是字节,用byte表示,1B = 8b 1024B = 1KB 1024KB = 1MB 1024MB = 1GB ...
- python进制转换或数据格式转换
以下是部分进制转换的,都是python内置函数 int(x [,base ]) 将x转换为一个整数 long(x [,base ]) 将x转换为一个长整数 f ...
- Python进制转换format格式化
进制转换:先介绍用传统数学方法,再介绍用python内置方法 二进制转十进制: 1101 转为十进制 1*2^(4-1)+1*2^(3-1)+0*2^(2-1)+1*2^(1-1) 即各个位拆开,乘以 ...
- python 进制 转换
测试用的python源码 ''''' Created on 2014年8月21日 @author: lenovo ''' import binascii import struct def examp ...
- javascript . 04 匿名函数、递归、回调函数、对象、基于对象的javascript、状态和行为、New、This、构造函数/自定义对象、属性绑定、进制转换
匿名函数: 没有名字的函数,函数整体加小括号不报错, 函数调用 : a:直接调用 (function (){函数体}) ( ) ; b:事件绑定 document.onlick = functio ...
随机推荐
- HDOJ 1698 Just a Hook (线段树)
题目: Problem Description In the game of DotA, Pudge’s meat hook is actually the most horrible thing f ...
- ARMV7-M数据手册---Part A :Application Level Architecture---A1 Introduction
1.前言 本章主要介绍了ARMV7体系结构及其定义的属性,以及本手册定义的ARMV7M属性. 主要包括: ARMV7体系结构和属性 ARMV7M属性 ARMV7M扩展 2. ARMV7体系结构和属性 ...
- ES6的Promise浅析
Promise 是异步编程的一种解决方案,比传统的解决方案——回调函数和事件——更合理和更强大. 它由社区最早提出和实现,ES6 将其写进了语言标准,统一了用法,原生提供了 Promise 对象. P ...
- HAProxy详解(三):基于虚拟主机的HAProxy负载均衡系统配置实例【转】
一.基于虚拟主机的HAProxy负载均衡系统配置实例 1.通过HAProxy的ACL规则配置虚拟主机: 下面将通过HAProxy的ACL功能配置一套基于虚拟主机的负载均衡系统.这里操作系统环境为:Ce ...
- 使用cstdiofile在vs2010中无法写入中文的问题
在VC2010环境下, 以下代码无法实现使用CStdioFile向文本文件中写入中文(用notepad.exe查看不到写入的中文) CStdioFile file; file.Open(…); fil ...
- linux系统的三种网络连接模式
VMWare提供了三种工作模式,它们是bridged(桥接模式).NAT(网络地址转换模式)和host-only(主机模式).要想在网络管理和维护中合理应用它们,你就应该先了解一下这三种工作模式. 1 ...
- linux TLB表
TLB - translation lookaside buffer 快表,直译为旁路快表缓冲,也可以理解为页表缓冲,地址变换高速缓存. 由于页表存放在主存中,因此程序每次访存至少需要两次:一次访存获 ...
- selenium控制浏览器
1.要把浏览器设置为全屏,否则有些元素是操作失败的,如对下图进行操作按钮是失败的,因为按钮没有显示出来 2.设置浏览器的宽.高 3.控制前进.后退(不建议使用driver.black().driver ...
- $Django cookies与session--解决无连接无状态问题, session配置
session作用: 会话保持,记住用户的登录状态(WEB网站,分布式架构) 作用(和cookie的区别) 避免了敏感信息保存在客户端,防止客户端修改cookie信息! -cookie:存储在客户端浏 ...
- 外网zabbix-server使用主动模式监控公司内网windows服务器
外网zabbix-server使用主动模式监控公司内网windows服务器 1.Zabbix Agent active批量调整客户端为主动模式监控将Template OS Windows模板调整为主动 ...