Python 语法笔记:
数据类型
一、数值
运算符:
+,-,*,/,(),= (赋值)
整型:
* 由0-9阿拉伯数字组成,如"1,10,50,30"
* 位数经测试可至70位以上
* 可使用函数"int()"将除复数以外的其它数转换为整型
* 可使用函数"long()"将除复数以外的其它数转换为长整型
浮点数:
* 由0-9阿拉伯数字和小数点组成,如"3.15,10.325"
* 最长为12位数
* 整数部分的位数至少为1位最多为12位
* 小数部分的位数 = 12 - 整数部分的位数
* 当浮点数与整数运算时,结果为浮点数
* 可使用函数"float()"将除复数以外的其它数转换为浮点数
复数:
* 由实部和虚部组成,如“(3+2j),(1.5+0.5j)”
* 虚部的后缀要加"j"或"J"来表示
* 可使用"变量名.real"获得实数,"变量名.imag"获得虚数
二、字符串
表示方法:
* 字符串用单引号、双引号或三重引号进行标识
* 三重引号标识的字符串可任意换行
* 可使用反斜杠对单引号或双引号标识的字符串进行分行
* 在字符串前加"r"后可使转义符号(如"\n"、"\t"等)失效
* 在字符串前加"u"后将定义为 Unicode 字符串(可在字符串中使用 Unicode-Escape 编码)
* "u"和"r"可联合使用,标识为"ur"
运算符:
* 可以使用"+"号来进行连接,如 "abc" + "def"
* 两个字符串值之间会自动连接(只限字符串,变量和表达式不可),如 "str" "ing"
* 可以使用"*"号来进行重复,如 "abc" * 5
* 使用使用函数"len()"返回字符串长度
分割(切片):
* 字符串可使用下标(索引)来查询,如 "word[4],word[0:2],word[2:],word[:4]"
* 下标从0开始
* 查询出的字符串为只读,不能使用字符串索引赋值
* word[:2] + word[2:] 等于 word
* 索引可以为负数,为负数时计数从右边开始
三、列表
* 列表是用方框号"[]"包含的多个数据,数据之间使用','号分隔,如"['string', 123, 342]"
* 列表可以像字符串一样被分割(切片)、连接
* 分割后的列表可以使用索引来进行赋值,如"a[3] = 'abc'"
* 列表中可以嵌套列表
* 直接用赋值号"="复制列表时,只是复制了列表的地址。类似于C语言中的指针
* 可以使用"b = copy.deepcopy(a)"来进行列表的完全复制,但要"import copy"导入"copy"模块
流程控制
一、判断语句(if)
Python中没有"switch case"语句,只能使用"if ... elif ... elif"替代。
语句结构:
if 条件1:
语句体1
elif 条件2:
语句体2
elif 条件3:
语句体3
else:
语句体4
二、循环语句(for, while)
语句结构:
for 临时变量 in 列表等:
语句体1
else:
语句体2
"break","continue","else"和"pass":
* break:跳出最近一级的"for"或"while"循环
* continue:继续执行下一次循环
* else:当"for"循环结束或"while"的条件为"false"时执行,但被"break"中止时不执行
* pass:什么也不做
三、有序数据生成函数(range)
语句结构:
range(起始数, 结尾数, 步长)
结合"for"语句一起使用,可达到类似PHP中"foreach"语句的效果:
for key in range(len(a)):
print key, a[key]
四、自定义函数
语句结构:
def 变量名(参数列表):
语句体
return 返回值
注意事项:
* 函数必须先定义才能使用,即函数的定义必须在使用它的语句之前
* 调用函数时要在函数名后加"()",否则调用的是函数的地址
* 如果函数中没有"return"语句或"return"语句为空时,返回的值为"None"
* 函数的参数中可直接使用事件定义过的变量名
* Python中的变量皆为全局变量,变量在函数中被修改后,函数外使用时为修改为的值
* 函数中的变量一般为局部变量,但由于列表和字典传递时传递的是地址,所以会修改原变量内容
* 可以在变量前加"global"声明为全局变量。如"global x"
* 函数起始行的多行字符串可以使用"函数名.doc"来调用。适合编写函数说明
数据结构
一、深入列表(List)
列表对象可以使用的方法:
* append(x):把一个元素添加至列表的结尾
* extend(L):将另外一个列表追加到本列表后面
* insert(i, x):在指定的位置插入一个元素。第一个参数是要播放位置的索引
* remove(x):删除列表中值为x的第一个元素,如不存在x则返回一个错误
* pop([i]):将指定位置的元素删除,被将其值返回。如没有指定索引,就操作最后一个元素
* index(x):返回x在列表中第一次出现的索引值,如没有匹配的元素就返回一个错误
* count(x):返回x在列表中出现的次数
* sort():对列表中的元素进行顺序排序
* reverse():根据列表中的索引进行倒序排列
把列表当做堆栈使用:
* 使用append方法进栈
* 使用pop()方法出栈
把列表当做队列使用:
* 使用append方法将元素加入队列
* 使用pop(0)方法取出队列中的第一个元素
函数化编辑工具:
* filter(func, sequence):从"sequence"中筛选出符合"func"条件的元素
* map(func, sequence):为"sequence"中的每一个元素依次调用"func"
* reduce(func, sequence):先使用"element1,element2"作为参数调用"func",再使用返回的结果"res1,element3"作为参数调用"func",依此类推,最后返回单一的一个值
列表推导式:
* 格式:[表达式 for 临时变量 in 列表 if 条件],"if 条件"为可选项
* 例子:[3*x for x in [2, 5, 6] if x > 2]
* 含义:将列表中大于2的元素都乘3,并返回为一个新的列表
删除语句:
* 格式:del 列表[索引]
* 索引可为单一的索引值,也可以为分割(切片)
* 也可以用于删除整个变量
二、元组(Tuples)&序列(Sequences)
* 元组是用圆框号"()"包含的多个数据,数据之间使用','号分隔。如"('string', 123, 342)"
* 圆框号在赋值时可以省略,如"a = 123, 456, 789"
* 如果只给元组中放入一个元素,则要在该元素后加上逗号","。如"a = 123,"或"a = (123,)"
* 列表可以像字符串一样被分割(切片)、连接
* 不能使用索引对元组中的某一元素赋值,如"a[2] = 'abc'"会进行报错
* 元组中可以嵌套元组
* 和列表一样,元组也不能使用"="号直接复制,需要使用"copy.deepcopy()"复制
三、字典(Dict)
* 字典是用大括号"{}"包含的以关键字为索引的多个数据,索引和数据之间用冒号":"分隔,数据之间用","号分隔。如 {key1:value1, key2:value2, key3:value3}
* 可以使用字符、数值和元组做为关键字,不能使用列表做为关键字
* 可以使用"字典变量名[关键字] = 值"为字典赋值。如"a['newkey'] = 12345"
* 可以使用"del 字典变量名[关键字]"来删除某个元素
* 可以使用方法"keys()"来返回字典中所有的关键字,返回的形式为列表。如"print a.keys()"
* 可以使用方法"haskey(关键字)"来判断字典中是否含有指定关键字的元素。如"a.haskey(key1)"
* 使用语句"dict()",可以直接将列表中的元组直接转换为字典(列表也可以使用列表推导式生成)。如"dict([(key1, value1), (key2, value2), (key3, value3)])"
四、循环技巧
* 在字典循环中可以使用"iteritems()"方法将关键字和对应的值读出。如"for k, v in a.iteritems():"
* 在列表循环中可以使用"enumerate()"函数将索引和对应的值读出。如"for i, v in enumerate(a):"
* 同时循环两个或多个列表时,可以使用"zip()"函数整体解读。如"for av, bv in zip(alist, blist):"
没有评论:
发表评论