一、
如果含中文:
1、要不在文件头加上: # coding=gbk
2、要不文件改为 以UTF-8无BOM格式编码
二、
python区分大小写
python可以单双引号相互嵌套而不用转义
python程序要求最好是全部使用缩进来分层
行尾的":"表示下一行代码缩进的开始,如果缩进行只有一条语句,也可以直接写在“:”之后的
处于同一级的代码所尽量要保持一致
python的编程规范指出:缩进最好采用空格的形式,每一层最好向右缩进4个空格
单行注释采用#
块注释使用三个单引号或者三个双引号包围程序即可
python也可以将两条语句书写在同一行而中间用分号隔开的
如果一行写不下可以像C一样使用‘\‘,如果在圆括号中,例如很多参数\也是可以去掉的,和C一样
python算式中的乘号不可以省略
要比较两个浮点数是否相等,应看他们的差是否小于一个极小的数即可
三、
字符串可以通过序号来取出其中某个字符,如:‘abcde‘[1]取得的值为b。
python字符串是可以用"+"、"*"进行运算的。
string的split函数返回以指定的字符将字符串分割成列表形式返回,但并不改变原字符串 。
string的join函数将原字符串插入参数字符串中的每两个字符之间,如果参数字符串只有一个字符,那么返回参数字符串。同样join不改变原字符串,只是返回一个新的字符串。
/运算符的运算结果为浮点数,即使两个整数相除。
//为整除运算符
原始字符串就是在字符串前以r或R作为标志,这种表示法常用来在windows系统下表示路径中的分隔符如r‘c:\windows\system‘,原始字符串不得以"\"结尾
python字符串格式化: print("i am a %s.", % "programer")
python中默认的都是utf-8编码字符串,在网络上发送字符串时要求必须转换为字节串(bytes)形式,那么就要是用字符串的encode()方法,它返回的是字节串(bytes),其形式如下:
encode(encoding=‘utf-8‘, errors=‘strict‘), encoding 默认编码方式为utf-8, 也可以使用gbk、gb2312等方式编码,编码和解码所指定的编码类型应该相同,这样才能正确还原字符串。
在python中"="作用是将对象引用与内存中某对象进行绑定,如果对象已经存在,就简单的进行绑定,以便引用右边的对象;若对象不存在就由“=”操作符创建对象并绑定
在任何时刻,某个对象引用都可以重新引用一个不同(类型)的对象
python会在运行时执行类型检查的,一旦不能运算会引发错误
列表支持加法运算、乘法运算
元组可以看成是一种特殊的列表,与列表不同的是元组一旦建立就不能改变,也可以通过序号来引用其中的元素
字典中通过键来访问成员,而不能通过其位置来访问该成员
python中的逻辑假包括:None、False、0、‘‘(空字符串)、()、[]、{}其余任何值都视为真
python中的逻辑运算符包括:and、or、not
not的结果只能为True或者False
or为“或”运算符,如果第一个操作数为真则直接返回第一个操作数,如果为假则返回第二个操作数或表达式的值
and为“与”运算符,如果第一个操作数为假则直接返回第一个操作数,如果为真则返回第二个操作数或表达式的值
is 和 is not 都是二元操作符,用于判断左端与右端对象引用是否指向同一个对象
in和not in称为成员操作符,用于检查某个数据是否存在于某包含多个成员的数据类型之中,成员操作符对于字典来说检查的是键成员而不是值成员
序列表示索引为非负整数的有序对象集合,包括前面所介绍的字符串、列表、和元组。字符串是字符的序列,列表和元组则是任意Python数据类型或对象的序列。字符串也是不可以变的,修改字符串就是重新创造了一个字符串
序列的切片是指用形如[start:end:step]来取序列中的部分成员数据项,意思是从序列中start序号开始到end前一个结束,每隔step个取一个成员,切片所取的元素从start开始,到end前一个结束,不包括序号为end的元素
sum(s[,start]) 返回s中各项的和
all(s) s中所有项为真,则返回真,否则返回假
any(s) s中有一项为真,则返回真,否则返回假
四、
if语句不带括号,末尾用 : 结束,else语句后面也是 : 结束 elif 同样,嵌套没有什么特别点。尽量少使用嵌套,难以阅读。
if语句可以使用在一个单语句之中,实现三元运算符,基本形式如下:
<表达式1> if <条件> else <表达式2> 其语义是当条件为真时取得表达式1的值,否则取得表达式2的值
a = None
b = 3
x = b if a is not None else 0当a的值不为None时,x取值为3,否则x取值为0
for语句不带括号,末尾用 : 结束。
for i in [1,2,3,4,5]:
print(i, "的平方是:", i*i)
else:
print(‘循环结束!‘)
可以在for语句中使用continue和break,后面不用带冒号,和C的用法类似
adct = {‘apple‘:15, ‘banana‘:20, ‘pear‘:35}
for key,value in adct.items():
print(key, ‘:‘, value)
for key in adct.keys():
print(key)
for value in adct.values():
print(value)
for循环经常使用到的range函数有三个参数,第一个为初始值,第二个为最大值不包含该值,第三个为每次递加的值。
enumerate 函数用于遍历序列中的元素的下标以及它们:
a=[1,2,3]
for i, d in enumerate(a):
print(i,":",d)
0:1
1:2
2:3
zip函数接受任意多个(包括0个和1个)序列作为参数,返回一个tuple列表。
b = (2,4,6)
for i,j in zip(a,b):
print(i,":", j)
1:2
2:4
3:6
因为字典既有键又有值,在遍历时不能直接对字典进行遍历二十通过字典的额items()、keys()、values()等方法分别遍历其键和值、键、值。如果同时遍历键和值,在遍历时可以使用两个循环变量来分别接收键和值。
range()函数并不是在调用时一次生成整个序列,而是遍历一次才产生一个值,以减少内存的占用,其本质是一个迭代器。
while循环不像for循环可以遍历某一对象的集合
while循环不带括号,末尾用 : 结束,也可以和for一样用else来判断循环结束的时候执行什么。
alst = [1,2,3,4,5]
total = len(alst)
i = 0
while i < total:
print(i, "的平方是:", i * i)
i = i + i
else
print(‘循环结束!‘)
结果打印出0到4的平方。
推导,使用原来序列来生成新的序列的一种方式
>>>a = [1,2,3,4]
>>>[2*i for i in a]
[2, 4, 6, 8]
>>>b = [‘a‘, ‘b‘, ‘c‘]
>>>{k:v for k,v in zip(b, a)}
{‘b‘:2, ‘c‘:3, ‘a‘:1}
>>>[2*i for i in a if i % 3 != 0]
[2, 4, 8]
>>> a = [1,2,3,4]
>>> [5+i for i in a if i % 3 != 0]
[6, 7, 9]
Python内置了几种常用的迭代函数,既方便又实用。
enumerate(seq) 编号迭代
sorted(seq)排序迭代
reversed(seq)反转迭代
zip(seq1,seq2,...)并行迭代
编号迭代在迭代时既返回序列中的元素,又返回该元素在序列中的编号(编号从0开始),for语句进行编号迭代时,应使用两个循环变量分别接收编号和元素的值。
排序迭代的作用是使得在for的遍历时先遍历序列中的较小的值,后遍历序列中较大的值,当然这要求序列中的数据可以是排序的同类数据。只需要一个变量即可
反转迭代就是将迭代序列中的元素从尾至头进行遍历
并行迭代也是一种很使用的迭代函数它在遍历时是同时遍历函数中给出的seq1、seq2等序列中同一序号的元素
并行迭代函数中序列值的长度不一致时,只遍历到最短的序列的长度
典型的列表推导基本形式如下:
[ <i 相关表达式> for i in aiterator]
aiterator是指一个可遍历的对象,比如列表,元组,也可以是range()函数。其语义为用循环变量i去遍历aiterator,并将i相关表达式的值放入一个列表中。
字典也是可以实现其推导式语法的,其基本格式如下:
{key_exp:value_exp for key_exp, value_exp in aiterator}
列表推导式和字典推导式不仅可以对遍历的元素进行全部处理,还可以使用if语句实现有选择的处理遍历序列中的元素其基本形式如下:
[ <i 相关表达式> for i in aiterator if <条件>]
{key_exp:value_exp for key_exp, value_exp in aiterator if<条件>}
如果要获得一个1~10中所有数的平方,且平方值为偶数的一个列表,就可以使用如下代码来实现:
square_odd = [i**i for i in range(1, 11) if i**i %2 == 1]
如果在推导式中的求值表达式或条件表达式中应用函数,则可以构造更加复杂的推导式来实现对序列中的数据进行批量的处理(这也常被称为声明式编程)。