首页 > 代码库 > python 学习笔记
python 学习笔记
1.操作符
与Java和C中十分类似, +(加), -(减), *(乘), /(除), %(求余), **(指数运算), = (赋值).以及减便运算,如 +=, -=, *=和/= 等.
赋值运算与其他语言一致.
逻辑操作
> < <= >= != ==与其他语言一样.
不一样的有not逻辑非,and逻辑与和or逻辑或.
2.注释与文档
一行当中,从#开始地方就是注释.不会影响下一行.
""引号放在文件的开头,函数的开头或者一个类的开头,就是文档注释,与Java中的/** ... */作用和目的是一样的.
3.折行
如果一行太长了,写不下了,就需要在下一行接着写,这时可以使用\来告诉Python,下一行继续.
4.一行写多个语句
Python是一个语句放在一行,行尾可以选择性的加上;但如果想在一行放多个语句,就需要用;来分隔语句:a = 1; b = 2; c = 3;
虽然这在语法上可行,但不是一个好习惯,绝大多数的编程规范都是要一行写一个语句.
5.List和Tuple
这就是Java或C中的数组.它是一个容器,能用来顺序的,以整数索引方式检索, 存储一组对象.List用[]来表示,如[1, 2, 3]就是一个List;而Tuple用()来表示,如(3, 4, 5)就是一个Tuple.它们的区别在于List是可变的;而Tuple是不可变的.也就是说不可以增,删和改.
索引方式除了与Java一样的以一个整数下标方式外,还可以指定开始,结束和步长,和使用负索引来分割List:
通用语法格式是:list[start:end:step]
- list[index] --- 返回第(index+1)个元素,受C语言影响,下标亦是从0开始
- list[start:end] --- 返回从start开始,到end-1,也就是list[start], list[start+1].....list[end-1]
- list[start:end:step] --- 与上面类似,只不过每隔step取一个
- list[:end] ---- 缺省的开端是0
- list[start:] ---- 缺省的结尾是len(list),或者-1
正数索引 0 1 2 3 数组元素 [1] [3] [5] [7] 负数索引 -4 -3 -2 -1
>>> a = [1, 3, 5, 7]; >>> a[0] 1 >>> a[3] 7 >>> a[-1] 7 >>> a[-2] 5 >>> a[0:3] [1, 3, 5] >>> a[1:3:2] [3] >>> a[0:3:2] [1, 5] >>> a[0:-1:2] [1, 5] >>>
List是一个对象,它有一此内置的方法,如:
- in 和 not in
>>> 3 in a True >>> 8 in a False >>> 8 not in a True >>>
- 符号+
>>> a + [9, 11] [1, 3, 5, 7, 9, 11]
- 重复*
>>> a * 2 [1, 3, 5, 7, 1, 3, 5, 7] >>>
5.字符串
字符串就是一个字符的数组,List的操作都可以对String直接使用.也就是符合以上的操作方式:
>>> str = ‘hello, world‘ >>> str[0:3] ‘hel‘ >>> str[0:3:2] ‘hl‘ >>> str[-1] ‘d‘
6.字串格式化符%
这是一个类似C语言printf,
语句是:formats % (var1, var2,....)
>>> "Int %d, Float %d, String ‘%s‘" % (5, 2.3, ‘hello‘) "Int 5, Float 2, String ‘hello‘" >>>
7.字典
用于以Key/Value方式存储的容器.更改方式为dict[key] = new_value;索引方式为dict[key].
dict.keys()方法以List形式返回容器中所有的Key;dict.values()以List方式返回容器中的所有的Value:
>>> box = {‘fruits‘: [‘apple‘,‘orange‘], ‘money‘: 1993, ‘name‘: ‘obama‘} >>> box[‘fruits‘] [‘apple‘, ‘orange‘] >>> box[‘money‘] 1993 >>> box[‘money‘] = 29393 >>> box[‘money‘] 29393 >>> box[‘nation‘] = ‘USA‘ >>> box {‘money‘: 29393, ‘nation‘: ‘USA‘, ‘name‘: ‘obama‘, ‘fruits‘: [‘apple‘, ‘orange‘]} >>> box.keys() [‘money‘, ‘nation‘, ‘name‘, ‘fruits‘] >>> box.values() [29393, ‘USA‘, ‘obama‘, [‘apple‘, ‘orange‘]] >>>
ps:box.keys()和 box.values() 输出的结果并不是按照逻辑顺序的。
8. if语句
>>> a = 3; b = 4; c = 5; >>> if a == b and a != c: ... print "Are you sure" ... elif (a == c and b == c): ... print "All equal" ... else: ... print "I am not sure" ... I am not sure >>>
9.while
>>> int i=0 SyntaxError: invalid syntax >>> i=0 >>> while i<3: print ‘ydd!‘ i=i+1 ydd! ydd! ydd!
10.for
>>> a=‘abcdef‘ >>> for i in a: print i a b c d e f
11.数组运算
格式为:
list = [expression for var in list condition]
>>> s=[1,2,3,4,5] >>> s [1, 2, 3, 4, 5] >>> [x*3 for x in s if x%2==0] [6, 12]
12.函数
如何定义函数
def function_name(args):
function_body;调用函数的方式function_name(formal_args):
13.设置为当前路径
>>> import os >>> os.getcwd() ‘D:\\Python27‘ >>> os.chdir(‘e:\\‘) >>> os.getcwd() ‘e:\\‘ >>>
14.lambda函数
它没有名字,只有参数和表达式,
>>> d= lambda x: x*x; >>> d(2) 4
lambda最大的用处是用作实参:
>>> def iter(func, list): ... ret = []; ... for var in list: ... ret.append(func(var)); #func 在这里就是x*x ... return ret; ... >>> iter(lambda x: x*x, a) [0, 1, 4, 9] >>>
>>> d(2) 4 >>> d <function <lambda> at 0x01F33030># 因为是作为实参,很明显地址是随机分配的 >>> d= lambda x:x*x >>> d(2) 4 >>> d <function <lambda> at 0x01F2FC70> >>>
15.print
print与%结合更为强大:
print formats % (var1, var2, ...):
>>> print "today is %d, welcome %s" % (2013, ‘alex‘); today is 2013, welcome alex >>>
16.range
- range([start], stop, [step]) --- 生成一个整数列表,从,start开始,到stop结束,以step为步长
>>> range(4) [0, 1, 2, 3] >>> range(1,4) [1, 2, 3] >>> range(1,4,2) [1, 3] >>>