常用列表
系统函数是可以直接调用式。
del():删除相应的变量,删除后该变量就相当于未进行定义。
len():获取序列的长度。其实质是调用对象的__len__()。所以自定义类时,只要重写了__len__方法即可。如:
class Demo(object):
def __len__(self):
return 3
d = Demo()
print(len(d)) # 3
如果不定义__len__函数,调用len(d)时会报错。
type():获取指定变量的类型,如tuple,list等。
str():将指定的变量转换为字符串。
help():查询文档。比如help(dict.keys)就是查询字典中keys()的用法与作用。
dir():查看模块中的方法、属性。然后可以通过help(模块名.方法名或属性名)查看对应的方法或属性的文档。
range():返回一个整数的list。range(stop),参数为列表中整数的终止值,如range(4)得到的就是[0, 1, 2, 3];range(start,stop),返回的是[start,start+1,……,stop-1];range(start,stop,step)以步长为step的形式增加。如:
>>> list(range(1,6))
[1, 2, 3, 4, 5]
外面必须使用list函数,否则不会返回列表。
print():输出。可以输出多个参数,只需要用逗号隔开即可,在输出时每一个逗号都会被替换成空格。
exit():在交互模式下,退出python交互。在代码中,退出整个程序。
abs():求绝对值。
max,min():求取系列中最大/小值。
divmod():Return the tuple (x//y, x%y)。
pow():两个参数是与**效果一样,即pow(2,3)就是2的3次幂。三个参数时,相当于x**y % z。
round():返回离参数最近的整数。如round(-11.6)返回提-12,而round(-11.2)返回是-11。
callable():返回当前变量是否可以被调用。如果是函数,返回true,否则返回false。
isinstance():判断变量是否属于某个类型。如isinstance(f,int)如果f是一个int变量则返回true,否则为false。
int,long,float,complex,bool:将字符串转换为相应类型的数字。其中Int类型涉及到进制问题。如int("15",16)表示字符串中的15是16进制的15,转换为10进制后的结果是21;int("f",16)得到是15。
str,list,tuple,hex,oct:将参数转换成字符串,列表,元组,十六进制,八进制。
chr,ord():前者将数字转换成unicode字符串,后者是前者的逆操作。注意:数字必须是正数。
filter:对iterable进行过滤。filter(function,iterable),依次将序列中元素传入到function中,只有返回True的元素才会被保留。如下:
a = range(1,10,3)
def f(x):
if x%2 == 0:
return True
else:
return False
b = filter(f,a)
print(list(a)) # [1, 4, 7]
print(list(b)) # [4]
zip:将多个序列中的元素依次封装到一个元组中。如果序列的长度不相同,以最短的长度为准。a = ['n1','n2','n3']
b = (123,234,345)
c = "abs"
print(list(zip(a,b,c))) # [('n1', 123, 'a'), ('n2', 234, 'b'), ('n3', 345, 's')]
其文档为:
"""
Return a zip object whose .__next__() method returns a tuple where
the i-th element comes from the i-th iterable argument. The .__next__()
method continues until the shortest iterable in the argument sequence
is exhausted(枯竭) and then it raises StopIteration.
"""
map:映射,将iterable中各个元素通过参数函数映射成另一个值,并将值组合成list返回。函数参数不能为None。依次将参数序列的元素传入函数中作为参数,并将函数返回值当前列表的元素。如:
def f(*x):
a = "%s"%(x[0])
b = (123,234,345)
print(list(map(f,b))) # [None, None, None] 因为f没有return,默认返回None
print(list(map(lambda x:x*2,b))) # [246, 468, 690]
第二个map中,将b中的参数依次传入lambad表达式中,得到的结果组成列表中的各个元素。
传入map中的序列各个不固定,可以是多个。
hasattr(obj,name):判断某对象是否具有指定的name属性。如果有返回True,否则返回False。注意:也可用来判断是否具有某个方法。如:
class Demo:
def __init__(self,a):
self.__a = a # 私有属性__a
self.a = a
def function(self,b):
return 'Demo%s-%s'%(self.__a,b) # 私有变量,类内部可以访问
def __private(self):
pass
d = Demo(3)
print hasattr(d,'function') # True
print hasattr(d,'__private') # False
print hasattr(d,'a') # True
print hasattr(d,'b') # False
print callable(d.function) # True 判断function属性是否为方法
print callable(d.a # False a只是属性,并不是方法,所以返回False
getattr(object, name[, default]):获取object对象中name属性的值,如果没有name属性就返回default。setattr(object, name, value):为object中name属性值设置成value。
raw_input([prompt]):获取用户在命令行中输入的文字,并以string形式返回。prompt表示提示给用户的文字。如:
obj = ('语文','数学','物理','化学')
sumScore = 0
for x in range(4):
sumScore += int(raw_input('请输入您的%s成绩:'%obj[x])) # 这里规定所有的成绩为整数,所以用int()
print '您的总成绩为:%d,平均成绩为:%s'%(sumScore,sumScore*1.0/4)
它的运行结果为:
请输入您的语文成绩:100
请输入您的数学成绩:20
请输入您的物理成绩:45
请输入您的化学成绩:52
您的总成绩为:217,平均成绩为:54.25
reduce:迭代。将上一次计算结果和下一个元素当作参数传入函数中,直到最后得到一个结果。如下:
from functools import reduce # 3.5中,将reduce换到了functools模块中
def f(a, b):
print(a, b) # 依次输出
return a + b
print(reduce(f, list(range(11))))
其输出结果为:0 1\1 2\3 3\6 4……。从中可以看出,每一次调用时a值都是上一次调用的返回值,除了第一次是前两个元素外。
上述代码就是求1+2+……+10的和。
sorted():将iterable(如list,tuple等)按升序方式排列,并将结果以list形式返回。如:print(type(sorted(('a','c','d','b')))) # list
print(sorted(('a','c','d','b'))) # ['a', 'b', 'c', 'd']
该函数还可以传入自定义函数,以关键字的形式传入,关键字为key。自定义函数将作用于iterable的每一个元素,并得到一个新值,将这些新值以升序排序,得到一个顺序,按该顺序调整iterable,并最终将调整后的结果以list返回。如:
def a(n):
return str(n)[::-1]
print(sorted((123,213,411,118),key = a)) # 传入定义函数,其结果为[411, 213, 123, 118]
a函数是将传入的值给反转,所以tuple就变成了321,312,114,811,按从小到大的顺序就是114,312,321,811,对应的原本的元组就成了输出的结果了。
sorted还可以传入关键字reverse,它表示是否反转升序喊出。默认时是升序,如果该关键字的值是True,则输出时就是降序。