Python_day6
Δ汉诺塔例子
# 定义三个全局的列表
la = []
lb = []
lc = [] stepn = 0 def create_hano(n):
'''构建由n个圆盘组成的汉诺塔'''
global la
la = [i for i in range(n, 0, -1)] def move(src, dest):
'''从src柱子上最上面的圆盘移动到dest柱子上'''
dest.append(src.pop())
global stepn
stepn += 1 input() print('柱子A:',la)
print('柱子B:',lb)
print('柱子C:',lc) def start_game(src, tmp, dest, n):
if n == 1:
move(src, dest)
return None
if n < 1:
return -1
start_game(src, dest, tmp, n-1)
start_game(src, tmp, dest, 1)
start_game(tmp, src, dest, n-1) create_hano(4)
print('柱子A:',la)
print('柱子B:',lb)
print('柱子C:',lc)
start_game(la, lb, lc, 4)
print(stepn)
- 生成器(generator):
- 迭代器(Iterator):
next()得到成员的:generator
- 可迭代(Iterable):
能用for遍历的:str, list, tuple, dict, set, generator, range
collections模块中定义的Iterator和Iterable类型
# 从1开始的fib
def fib(n):
a, b = 0, 1
while n > 0:
# print(b)
yield b # 随着生成器调用next方法,得到yield的值
a, b = b, a+b
n -= 1
return 'done' g = fib(10)
print(g)
- 匿名函数 lambda : 适合函数功能简洁的
f = lambda x : True if x % 2 == 0 else False
print(type(f)) print(f(101)) f = lambda : print('hello world')
f() f = lambda x, y : x * y
print(f(10, 14)) f = lambda x, y=2 : x ** y
print(f(5, 5)) f = lambda x, *arg : print(x, arg)
print(f(1, 2,3,4,5,6))
- 高阶函数:函数为参
- map():对多个参数进行同一操作
def test(n):
return n ** 3 # g = map(test, (1,2,3,4))
g = map(lambda x : x**3, (1,2,3,4))
print(type(g)) print(next(g))
print(next(g))
print(next(g)) '''
for res in g:
print(res)
'''
l = list(g)
print(l)'''
练习1:
生成一个由5个10以内随机整型数组成的列表,使用高阶函数map实现将5个整型数分别转换为字符串
'''
import random l = [random.randrange(10) for i in range(5)]
print(l)
l = list(map(str, l))
print(l) '''
练习2:
将列表中每一个元素都转换为一个标准的标题,首字符大写其它小写
l = ['hello world', 'Good AFTERNOON', 'morning']
'''
l = ['hello world', 'Good AFTERNOON', 'morning']
l = list(map(lambda x : x.title(), l))
print(l) - filter():过滤
res = filter(lambda x : x % 2 == 0, [random.randrange(100) for i in range(10)])
print(list(res)) - sorted():排序,有key值默认为NONE
l = ['hello', 'Yes', 'PYTHON', 'world', 'Go']
res = sorted(l, key=str.lower, reverse=True) # 按小写排序
print(res) - reduce() :两个变量后跟类型 functools
from functools import reduce def f(x, y):
return x * 10 + y n = reduce(f, (1,5,6,7))
print(type(n), n) n = reduce(lambda x,y : x*y, (1,2,3,4,5,6))
print(n)
'''
实现一个将字符串转换为整型数的函数str2int()
'1432' ----> 1432 不允许调用int函数
'''
def str2int(s):
g = map(lambda x:ord(x)-ord('0'), s)
return reduce(lambda x, y:x*10+y, g) print(str2int('1423'))
- 装饰器(decorator):修饰函数
import datetime
d = datetime.date()
print(d)
'''
# 函数作为返回值
def test():
return str f = test()
print(f(1234)) import functools def decorator(f):
@functools.wraps(f) # 此装饰器作用是将f的函数名赋值给wrapper
def wrapper(*args, **kw):
'''装饰器的内部函数'''
# print(args, kw)
print('hello python')
# print(f.__name__)
return f(*args, **kw)
return wrapper @decorator
def show(name1, name2):
'''验证装饰器功能的小函数'''
print('hello %s and %s' % (name1, name2))
return 100 print(show.__name__)
print(show.__doc__)
res = show('aa', 'bb') # show = decorator(show)
print(res)
带参数的装饰器
import functools def log(text, text2):
def decorator(f):
@functools.wraps(f)
def wrapper(*args, **kw):
print('log', text, text2)
print('这个装饰器好吧?')
return f(*args, **kw)
return wrapper
return decorator @log('argument', 'haha')
def now():
print('2018-12-12') now() # now = log('argument')(now)
Python_day6的更多相关文章
- python_day6学习笔记
一.Logger模块 logging.basicConfig函数 可通过具体参数来更改logging模块默认行为,可用参数有 filename: 用指定的文件名创建FiledHandler(后边会具体 ...
随机推荐
- PHP常用的转义函数
1. addslashes addslashes对SQL语句中的特殊字符进行转义操作,包括(‘), (“), (), (NUL)四个字符,此函数在DBMS没有自己的转义函数时候使用,但是如果DBMS有 ...
- react学习笔记(二)
在以类继承的方式定义的组件中,为了能方便地调用当前组件的其他成员方法或属性(如:this.state),通常需要将事件处理函数运行时的 this 指向当前组件实例. 绑定事件处理函数this的几种方法 ...
- XSY contest1586 proB
题目 现在一圈n个花坛, 每次随机往一个花盆里种花, 一个花盆可以种多颗花, 假如一个花盆两边的花盆都有花, 那么他也将被种上花 问期望种满所有花盆要种几次 首先定义f(i)为放置了i个物品后完全覆盖 ...
- C语言的基础输入输出
首先来整理一下各个数据类型的输入输出格式: 1.char %c 2.int/short int %d 3.long int %ld 4.long long int %lld 5.float %f 6. ...
- python至winreg模块
_winreg模块在python3中已经改名了 https://blog.csdn.net/zhangxiaoyang0/article/details/72236305?fps=1&loca ...
- PHP安装Commposer
一先把php加到环境变量里面测试 看一下版本号: 二,composer得安装注意安装的时候 php必须在5.59以上版本,openssl的扩展开启,pdo的扩展开启,mbstring的扩展开启 1,下 ...
- PHP和Redis实现在高并发下的抢购及秒杀功能示例详解
抢购.秒杀是平常很常见的场景,面试的时候面试官也经常会问到,比如问你淘宝中的抢购秒杀是怎么实现的等等. 抢购.秒杀实现很简单,但是有些问题需要解决,主要针对两个问题: 一.高并发对数据库产生的压力二. ...
- Python文件操作---合并文本文件内容
目前一个用的比较多的功能:将多个小文件的内容合并在一个统一的文件中,对原始文件重命名标记其已被处理过.之前使用其他脚本写的,尝试用python写了一下,顺便熟悉一下python的文件处理命令. 原始文 ...
- HDU 5723 Abandoned country(kruskal+dp树上任意两点距离和)
Problem DescriptionAn abandoned country has n(n≤100000) villages which are numbered from 1 to n. Sin ...
- mysql之my.cnf详解
以下是 my.cnf 配置文件参数解释: #*** client options 相关选项 ***# #以下选项会被MySQL客户端应用读取.注意只有MySQL附带的客户端应用程序保证可以读取这段内容 ...