为了便于查找,在这贴一些python基础知识,随时更新。
by FW
http://blog.csdn.net/adrianfeng/archive/2010/09/13/5881353.aspx
转载请注明
列表:
列表中用for
去掉列表中每个元素头尾的空格
>>> freshfruit = [' banana', ' loganberry ', 'passion fruit ']
>>> [str.strip() for str in freshfruit]
['banana', 'loganberry', 'passion fruit']
把列表中,大于3的元素,乘以2
>>> vec = [2, 4, 6]
>>> [2*x for x in vec if x > 3]
[8, 12]
把列表1的每一个元素和列表2的每一个元素相乘
>>> lst1 = [2, 4, 6]
>>> lst2 = [4, 3, -9]
>>> [x*y for x in lst1 for y in lst2]
[8, 6, -18, 16, 12, -36, 24, 18, -54]
获取[0-10)的平方
[x**2 for x in range(10)]
或
map(lambda x : x*x, range(10))
获取[0-10)中奇数的平方
[x**2 for x in filter( lambda x : x%2, range(10) )]
删除列表中的元素
del语句用来删除一个List的一个元素或是几个连续的元素,也就是一个slice:
>>> a = [-1, 1, 66.6, 333, 333, 1234.5] >>> del a[0] >>> a [1, 66.6, 333, 333, 1234.5] >>> del a[2:4] >>> a [1, 66.6, 1234.5]
del语句也可以用来删除整个变量:
>>>del a
还可以:
del a[:]
range函数
range(1,5) => [1,2,3,4] range(5) => [0,1,2,3,4] range(1,5,2) => [1,3]
获取列表长度:
len(lst)
列表寻址:
t = ['a', 'b', 'c', 'd', 'e', 'f']
t[1:3] => ['b', 'c']
t[:3] => ['a', 'b', 'c']
t[3:] => ['d', 'e', 'f']
t[:] => ['a', 'b', 'c', 'd', 'e', 'f']
函数:
匿名函数:
>>> def f(x): ... return x*2 ... >>> f(3) 6 >>> g = lambda x: x*2 ① >>> g(3) 6 >>> (lambda x: x*2)(3) ② 6
① | 这是一个 lambda 函数,完成同上面普通函数相同的事情。注意这里的简短的语法:在参数列表周围没有括号,而且忽略了 return 关键字 (隐含存在,因为整个函数只有一行)。而且,该函数没有函数名称,但是可以将它赋值给一个变量进行调用。 |
② | 使用 lambda 函数时甚至不需要将它赋值给一个变量。这可能不是世上最有用的东西,它只是展示了 lambda 函数只是一个内联函数。 |
总的来说,lambda 函数可以接收任意多个参数 (包括可选参数) 并且返回单个表达式的值。lambda 函数不能包含命令,包含的表达式不能超过一个。不要试图向 lambda 函数中塞入太多的东西;如果你需要更复杂的东西,应该定义一个普通函数,然后想让它多长就多长。
- # lambda.py
- def fun1(n):
- return lambda m:m**n
- def fun2(m, n):
- return m+n
- # 演示通常的lambda用法
- f1 = lambda x,y,z: x*2+y+z
- print f1(3,2,1)
- # 动态生成一个函数
- f2 = fun1(2)
- print f2(4)
- # lambda用作函数参数的写法
- print fun2(3, (lambda x:x+1)(2))
类:
类的实例属性和静态属性:
所有的示例属性必须以self作为前缀
- class Demo():
- #静态属性
- staticattr=0
- def __init__(self):
- #对象属性
- self.objattr=0
类的私有成员:
python的私有成员通过名字区分,以两个下划线开头的为私有成员。
也可以强制访问私有成员:
instance._classname__attribute
其中,instance为对象名,classname为类名,attribute为属性
动态增加函数:
可以先定义一个函数,然后动态的增加到类的方法里。
- def f1(self):
- print 'f1'
- class Demo:
- pass
- Demo.fun=f1
构造函数:
python的__int__函数类似于c++的构造函数,子类的构造函数必须先调用父类的构造函数
内置属性:
__dict__ 属性组成字典
__module__ 类名所在模块名
__class__ 类名
- class Ca():
- data=0
- def __init__(self):
- self.d=0
- self.c=0
- test=Ca()
- print 'test.__class__:',test.__class__
- print 'test.__dict__:',test.__dict__
- print 'test.__module__:',test.__module__
输出(注意并没有输出静态变量):
test.__class__: __main__.Ca
test.__dict__: {'c': 0, 'd': 0}
test.__module__: __main__
多态实现:
isinstance可以判断对象是否属于一个类:
- class Cbase: