一,高级特性:

1,切片:[start:stop:step]

>>>l=range()
>>>l[,-,]
resulte is []

2,迭代

  2.1按itervalues()

>>> d={1:2,2:3,3:4}
>>> for k in d:
... print k,d[k]
...
1 2
2 3
3 4

  2.2 按iteritems()

>>> for v in d.iteritems():
... print v
...
(1, 2)
(2, 3)
(3, 4)
以元组形式返回

  2.3 带索引输出:enumerate

>>> for i,value in enumerate(['a','b','c']):
... print i,value
...
0 a
1 b
2 c

  2.4 生成器:一边循环一边计算的机制,称为生成器(Generator),有利于节省存储空间,相当于链表中next

>>> def fib(max):
... n,a,b=0,0,1
... while n<max:
... yield b
... a,b=b,a+b
... n=n+1
...
>>> fib(6)
<generator object fib at 0x7f7f3c2b94b0>
>>> for i in fib(6):
... print i
...
1
1
2
3
5
8

(二),函数式编程

1,高阶函数:函数名当作方法的参数变量

>>> def add(x,y,abs):
... return abs(x)*abs(y)
>>> def cut(x,add):
... return x-add(x,x,abs)
...
>>> cut(1,add)
0

2,map

把用户输入的不规范的英文名字,变为首字母大写,其他小写的规范名字
map(lambda s :s.capitalize(),['AC','ac']
[Ac,Ac]

reduce:

>>> l=map(lambda s:s.capitalize(),['AC','ac'])
>>> reduce(lambda x,y:x+y,l)
'AcAc'

filter:

>>> import math
>>> def isPrim(s):
... for i in range(2,int(math.sqrt(s)+1)):
... if s%i==0:
... return False
... return True
...
>>> filter(isPrim,range(2,10))
[2, 3, 5, 7]
>>> import time
>>> print time.mktime(time.localtime())//时间计算
1497605034.0

3,sorted  x>y 1,x<y -1 x==y 0

 sorted([1,3,2],lambda x,y:y-x) //如果y-x>0则两个数交换位置,使用冒泡排序
[3, 2, 1]

4,闭包(Closure),使用返回函数形式:

def count():
fs=[]
for i in range(1,4)
def f(j):
def g():
return j*J
return g
fs.append(f(i))
return fs
for i in count():
print i,j

5,匿名函数:lambda

6,“装饰器”(Decorator):对方法进行增强说明,但有不去改变方法

import functools

def log(args):
""""""
task = "call"
def actual_log(func):
@functools.wraps(func)
def wrapper(*args,**kw):
print '%s:%s()' % (task,func.__name__)//两个下划线
return func(*args, **kw)
return wrapper
if hasattr(args,'__call__'):
return actual_log(args)
else:
task = args
return actual_log @log
def f():
pass @log("execute")
def e():
pass

5,偏函数

>>> max2=functool.partial(max,10) //10作为*args的一部分自动加到左边
>>> max2(1,3,4,5)
10
>>> def func(a,b,c):
>>>  print a,b,c
>>>func2=functools.partial(func,b=3) 替换关键参数
>>>func(1,c=4)
1 3 4

python学习心得的更多相关文章

  1. python学习心得第五章

    python学习心得第五章 1.冒泡排序: 冒泡是一种基础的算法,通过这算法可以将一堆值进行有效的排列,可以是从大到小,可以从小到大,条件是任意给出的. 冒泡的原理: 将需要比较的数(n个)有序的两个 ...

  2. python学习心得第四章

     python 学习心得第四章 1.lambda表达式 1:什么是lambda表达式 为了简化简单函数的代码,选择使用lambda表达式 上面两个函数的表达式虽然不一样,但是本质是一样的,并且lamb ...

  3. python学习心得第三章

    python学习心得第三章 1.三元运算 变量=值1 if 条件 else 值2 由图如果条件成立则赋值1给变量,如果条件不成立则赋值2给变量. 2.数据类型 集合:set() class set(o ...

  4. 获奖感想和python学习心得

    一,获奖感想 很荣幸能成为小黄杉的获得者,也很感谢老师对我的这份鼓励和期望.回顾本学期的python学习中,我从一名对编程一无所知的小白,成为一名刚入门的程序猿.首先,我要感谢我的任课老师娄嘉鹏老师, ...

  5. Python学习心得体会总结,不要采坑

    前言 本文的文字及图片来源于网络,仅供学习.交流使用,不具有任何商业用途,版权归原作者所有,如有问题请及时联系我们以作处理. 作者:樱桃小丸子0093   大家要持续关注哦,不定时更新Python知识 ...

  6. python学习心得第一章

    初始python 1什么是程序 计算机程序是一组执行某种动作的的指令.和那些电路.芯片.显卡.硬盘等不同,它不是计算机本身可以触摸的部分,而是隐藏在背后运行在硬件上面的东西.程序就是一系列告诉没有知觉 ...

  7. python 学习心得

    多用类或是函数 我以前写的时候,不用函数,从头写到尾,后来,要改成函数,也是要花很多测试的时间,改的话还得一个调试,如果一开始就用函数的话,就能节省很多时间. 函数的功能尽可能的小 比如说像我用try ...

  8. python学习心得第二章

    python基础 1.关于python编码的问题. python的编码现在主要是两种版本python2.7和python3.5 python2.7默认的是ascii码进行编译,我们可以采用 # -*- ...

  9. Python学习心得--变量类型篇

    1.Python允许同时为多个变量赋值.例如:a = b = c = 1 2.Python允许多个对象指定多个变量.例如:a1, b1, c1 = 1, 2, "john" 3.使 ...

  10. python学习心得(三)

    一,面向对象编程 1,类和实例, class Student(object):#括号里面的是继承的类 def __init__(self, name, score):初始化对象时,参数个数 self. ...

随机推荐

  1. [zoj] 1937 [poj] 2248 Addition Chains || ID-DFS

    原题 给出数n,求出1......n 一串数,其中每个数字分解的两个加数都在这个序列中(除了1,两个加数可以相同),要求这个序列最短. ++m,dfs得到即可.并且事实上不需要提前打好表,直接输出就可 ...

  2. linux进程——后台运行的方法

    linux进程后台运行的几种方法: 我们经常会碰到这样的问题,用 telnet/ssh 登录了远程的 Linux 服务器,运行了一些耗时较长的任务, 结果却由于网络的不稳定导致任务中途失败. 如何让命 ...

  3. MAP的get与containskey

    前提是:Map可以出现在k与v的映射中,v为null的情况, 所以containsKey出现更加必要. map.get(key)是得到的key所对应的value值. map.contains(key) ...

  4. Python学习笔记(Django篇)——4、继续完善视图层

    在demo/views.py中添加这些代码: def detail(request, question_id): returnHttpResponse("You're looking at ...

  5. for 循环里的i++

    写代码的时间也不短了,今天看快速排序的算法的时候才去更深层次得理解... for (语句 1; 语句 2; 语句 3) {     被执行的代码块 } 语句 1 (代码块)开始前执行 语句 2 定义运 ...

  6. Flash Builder 4.7 完美破解

    1. 准备安装文件和序列号生成器1Adobe Flash Builder 4.7 的安装文件可以从以下两个连接下载到:•32bit:http://trials3.adobe.com/AdobeProd ...

  7. Jquery操作属性选择器

    <!DOCTYPE html> <html> <head> <meta charset="UTF-8"> <title> ...

  8. Laravel Model Factory(模型工厂)的用法以及数据本地化

    Model Factory的位置 生成数据方法:make是生成数据,create是生成数据并保存到数据库 本地化方法 这样便生成了中文数据 整理自www.laravist.com视频教程

  9. Reporting Services 的一些问题

    做报表有一段时间,感觉Reporting Services还是比较麻烦的,因为网上的例子有的比较少,很多地方都需要自己摸索,说说我遇到的一些问题 1:页首的设计 一些固定显示的资料放在页首里面比较方便 ...

  10. 找出数字数组中最大的元素(使用Math.max函数)

    从汤姆大叔的博客里看到了6个基础题目:本篇是第1题 - 找出数字数组中最大的元素(使用Match.max函数) 从要求上来看,不能将数组sort.不能遍历.只能使用Math.max,所以只能从java ...