python笔记

今天回顾了下Python Tutorial,记了点笔记。

range 和 xrange 区别:
range返回的是一个list, xrange返回的是一个生成器,不必开辟一片大的内存空间,每次调用返回一个值,性能更优


fib:
def fib(n):
    result = []
    a, b = 0, 1
    while b < n:
        result.append(b)
        a, b = b, a + b
    return b  

def f(a, b, *c) b接受元组, c接受字典, 包含所有未出现在形式参数列表中的关键字参数。

TypeError: f() got multiple values for keyword argument 'a'
c的key值不能包含a,b

lambda:类似嵌套函数,表现形式单一,只能是单一表达式


g = lambda a, b : a+b

g(1,2) ==> 3

list方法:

append(x)
extend(L)      区别a=[1,2], b=[3,4]   a.append(b)=[1,2,[3,4]]   a.extend(b)=[1,2,3,4]
insert(i,x)
remove(x)    删除第一个值为x的元素
pop([i])      没有i的时候,删除最后一个元素
index(x)      返回第一个元素为x的索引
count(x)
sort()
reverse()   sort 和 reverse 都直接在内存中修改对象。

函数化编程:
filter(function, sequence) 过滤器


def f(i):
return i % 2 == 1
filter(f, range(10))  ==>  [1,3,5,7,9]

map(function, sequence) 为了seq中的每个值都执行function,返回list


def f(i):
    return x**2
map(f, range(10)) ==> [0, 1, 4, 9, 16, 25, 36, 49, 64, 81]

reduce(function, sequence) 假设seq为a,b,c,d,则先计算function(a,b)得到t,然后计算function(t,c)以此类推 sequence不能为空,只有一个元素就返回本身


reduce(lambda a, b: a+b, range(10)) ==> 45

list comprehensions 链表推导


a = range(10)
[i for i in a if i % 2 == 1]  ==> [1, 3, 5, 7, 9]


<!-- lang: python -->
[[x, y] for x in a for y in a]

[[0, 0], [0, 1], [0, 2], [0, 3], [0, 4], [0, 5], [0, 6], [0, 7], [0, 8], [0, 9], [1, 0], [1, 1], [1, 2], [1, 3], [1, 4], [1, 5], [1, 6], [1, 7], [1, 8], [1, 9], [2, 0], [2, 1], [2, 2], [2, 3], [2, 4], [2, 5], [2, 6], [2, 7], [2, 8], [2, 9], [3, 0], [3, 1], [3, 2], [3, 3], [3, 4], [3, 5], [3, 6], [3, 7], [3, 8], [3, 9], [4, 0], [4, 1], [4, 2], [4, 3], [4, 4], [4, 5], [4, 6], [4, 7], [4, 8], [4, 9], [5, 0], [5, 1], [5, 2], [5, 3], [5, 4], [5, 5], [5, 6], [5, 7], [5, 8], [5, 9], [6, 0], [6, 1], [6, 2], [6, 3], [6, 4], [6, 5], [6, 6], [6, 7], [6, 8], [6, 9], [7, 0], [7, 1], [7, 2], [7, 3], [7, 4], [7, 5], [7, 6], [7, 7], [7, 8], [7, 9], [8, 0], [8, 1], [8, 2], [8, 3], [8, 4], [8, 5], [8, 6], [8, 7], [8, 8], [8, 9], [9, 0], [9, 1], [9, 2], [9, 3], [9, 4], [9, 5], [9, 6], [9, 7], [9, 8], [9, 9]]

del

元组tuple
a = 1, 2, 3 或者 a = (1,2,3)
元组就像字符串,不可改变

集合sets
无序不重复元素的集合。支持union(|), intersection(&), difference(-), sysmmetric difference(^)


>>> a = set([1,2,3,4])
>>> b = set([2,5])
>>> a - b
set([1, 3, 4])
>>> a | b
set([1, 2, 3, 4, 5])
>>> a & b
set([2])
>>> a ^ b
set([1, 3, 4, 5])

字典dict
sorted(a.items(), key=lambda a: a[0]) 按key排序
sort和sorted区别:
sort原地排序,sorted重新生成新的list。

sort(…)


L.sort(cmp=None, key=None, reverse=False) -- stable sort *IN PLACE*;

cmp(x, y) -> -1, 0, 1

sorted(…)


orted(iterable, cmp=None, key=None, reverse=False) --> new sorted list



<!-- lang: python -->
>>> a
['1', '11', '222', '65']
>>> def f(x):
            return len(x)
>>> a.sort(key=f)
>>> a
['1', '11', '65', '222']
key效率比cmp高

loop
enumerate , zip

你可能感兴趣的:(python笔记)