主要参考廖雪峰的python教程
不断的学习才能不断发现好东西!
富而不骄易,穷而不怨难
数据类型 (一切均为对象)
整数(int)、浮点数(float)、字符串(str)、布尔值(bool)、空值(NoneType)、变量、常量
常用数据结构 (collections)
list:是一种有序的集合,可以随时添加和删除其中的元素;用索引来访问list中每一个位置的元素,记得索引是从0开始的;如果要取最后一个元素,除了计算索引位置外,还可以用-1做索引,直接获取最后一个元素;当索引超出了范围时,Python会报一个IndexError错误;用len()函数可以获得list元素的个数;如果一个list中一个元素也没有,就是一个空的list,它的长度为0,如[]。unhashable type: ‘list’,故不可以放入set和dict中。
tuple:tuple和list非常类似,也为有序集合,但是tuple一旦初始化就不能修改;因为tuple不可变,所以代码更安全。如果可能,能用tuple代替list就尽量用tuple;tuple的陷阱:当你定义一个tuple时,在定义的时候,tuple的元素就必须被确定下来;如果要定义一个空的tuple,可以写成();只有1个元素的tuple定义时必须加一个逗号,来消除歧义,如(1,),这是因为括号()既可以表示tuple,又可以表示数学公式中的小括号,这就产生了歧义。
dict:全称dictionary,在其他语言中也称为map,使用键-值(key-value)存储,具有极快的查找速度;dict内部存放的顺序和key放入的顺序是没有关系的。
和list比较,dict有以下几个特点:
查找和插入的速度极快,不会随着key的增加而变慢;
需要占用大量的内存,内存浪费多。
而list相反:
查找和插入的时间随着元素的增加而增加;
占用空间小,浪费内存很少。
所以,dict是用空间来换取时间的一种方法。
正确使用dict非常重要,需要牢记的第一条就是dict的key必须是不可变对象。在Python中,字符串、整数等都是不可变的,因此,可以放心地作为key。而list是可变的,就不能作为key。由于一个key只能对应一个value,所以,多次对一个key放入value,后面的值会把前面的值冲掉,也就是说
key不重复。
- set:和dict类似,也是一组key的集合,但不存储value。由于key不能重复,所以,在set中,没有重复的key,重复元素在set中自动被过滤。要创建一个set,需要提供一个list作为输入集合。set可以看成数学意义上的无序和无重复元素的集合,因此,两个set可以做数学意义上的交集&、并集』等操作。set的原理和dict一样,所以,同样不可以放入可变对象,因为无法判断两个可变对象是否相等,也就无法保证set内部“不会有重复元素”,因此,不能把list放入set中,可以把tuple放入set中,但是tuple中若是含有list元素,则不能放入set中。
- range:不可变数字序列类型;str,不可变的字符串对象,即不可变的文本序列
- frozenset:是冻结的集合,它是不可变的,存在哈希值,好处是它可以作为字典的key,也可以作为其它集合的元素。缺点是一旦创建便不能更改,没有add,remove方法。set是可变的,有add(),remove()等方法。既然是可变的,所以它不存在哈希值。
备注:
- 对于不变对象来说,调用对象自身的任意方法,也不会改变该对象自身的内容。相反,这些方法会创建新的对象并返回,这样,就保证了不可变对象本身永远是不可变的。
- 使用key-value存储结构的dict在Python中非常有用,选择不可变对象作为key很重要,最常用的key是字符串。
- 常用内建常量:True,False,None
- 常用内建函数:
abs(x):返回一个数的绝对值。参数可以是整数或浮点数,如果参数是一个复数,将会返回它的模;
all(iterable):如果 iterable(迭代器) 中所有元素都为 true (或者iterable 为空)则返回 True;
any(iterable):假如iterable 里任意一个元素是True,则返回True。假如iterable是空, 返回 False;
bin(x):将一个整数转换成一个二进制字符串;
class bool([x]):返回一个布尔值, True 或者False之一. x 是使用标准转换的真值测试器. 如果x 的值为假或者省略, 将返回 False; 其它的输入则返回 True. bool 类是 int类的一个子类 ;他不能产生子类. 只能实例化为布尔值 False 或者 True;(bool(None)返回False);
chr(i):返回一个Unicode编码是整数i的字符串,例如, chr(97)返回字符串 ‘a’;
ord(c):Given a string representing one Unicode character, return an integer representing the Unicode code point of that character. For example, ord(‘a’) returns the integer 97;
pow(x, y[, z]):返回x 的 y次方; 如果 z 提供的时候,返回 x 的 y 次方,然后对 z取模。(这样比 pow(x, y) % z) 更高效;
print(*objects, sep=’ ‘, end=’\n’, file=sys.stdout, flush=False)
打印 objects 到文本流对象 file,以 sep 为分隔符,以 end 为结尾符。如果要提供 sep, end 和 file 这三个参数的话,必须使用键值对的形式;
range(start, end, step):参数含义:start:计数从start开始。默认是从0开始。例如range(5)等价于range(0, 5); end:技术到end结束,但不包括end.例如:range(0, 5) 是[0, 1, 2, 3, 4]没有5,step:每次跳跃的间距,默认为1。例如:range(0, 5) 等价于 range(0, 5, 1);
round(number[, ndigits]):返回浮点数 number 四舍五入到小数点之后 ndigits 位的结果。如果省略ndigits,该参数默认为零;
class set([iterable]):返回一个新的set 对象,其元素可以从可选的iterable获得,set是一个内建的类;
setattr(object, name, value):getattr()的相反操作。参数是一个对象、一个字符串和任何一个值。字符串可以是一个已存在属性的名字也可以是一个新属性的名字。该函数将值赋值给属性,只要对象允许。例如,setattr(x, ‘foobar’, 123)等同于x.foobar = 123;
hasattr(object, name):参数是一个对象和一个字符串,返回一个bool值;
sorted(iterable[, key][, reverse]):依据iterable中的元素返回一个新的列表;
class str(object=b”, encoding=’utf-8’, errors=’strict’):返回 object 的 字符串 版本;
sum(iterable[, start]):将start以及iterable的元素从左向右相加并返回总和。start默认为0。iterable的元素通常是数字,start值不允许是一个字符串;
class tuple([iterable]):构建一个元组;
class type(object):返回object的类型;
zip(iterables):利用每个可迭代元素,制作一个迭代器来聚合元素,返回一个zip对象,zip() 与 操作符一起可以用来 unzip 一个列表;
dir([object])参数缺省情况下,返回当前域中所有的变量名和方法名,已经引入的模块名。有一个参数的话,尝试返回由该参数对象的有效属性组成的列表;
divmod(a, b):参数为两个数值(非复数),返回它们相除后的的商和余数;
numerate(iterable, start=0):返回一个枚举对象,enumerate类型。iterable 必须是序列、迭代器,或者其他支持迭代的对象。由 enumerate() 返回的迭代器的 next() 方法返回一个元组,该元组包括一个计数器 (从 start 开始,start 默认值为0) 和对 iterable 的迭代中取得的值;
eval(expression, globals=None, locals=None):参数是一个字符串参数和可选的 globals 和 locals 两个参数。如果提供 globals 参数,则该参数必须是一个字典。如果提供 locals参数,则该参数可以是任何映射类型的对象,如:
print(eval(‘x+5’)),输出6;
exec(object[, globals[, locals]]):exec语句用来执行储存在字符串或文件中的Python语句,如:exec(‘print(“Hello World”)’),输出:Hello World;
filter(function, iterable):本函数用来从一个迭代对象iterable遍历所有元素,当每个元素作为参数给函数function对象运行之后,判断为True的元素保留下来,而为False的元素则跳过,即是达到过滤不需要元素的目标。参数iterable是可迭代的对象,比如列表、字典、字符串,或者带迭代器的函数对象。参数function是一个能输入元素进判断并返回值的函数,如果这个参数为空,默认使用标识函数identity为缺省函数;
class float([x]):返回一个由数值或字符串 x 转换而成的浮点数;
format(value[, format_spec]):将value转化成“格式化”的表现形式,格式由format_spec控制。对format_spec的解释依赖于value参数的类型,大多数内置类型有标准的格式化语法:格式化规范迷你语言。format_spec 的默认值为空字符串,返回的结果通常与 str(value) 相同。
class frozenset([iterable]):返回一个新的frozenset对象,如果可选参数iterable存在,frozenset的元素来自于iterable;
hash(object):返回对象的哈希值. hash值是整数。它被用于在字典查找时快速比较字典的键。相同的数值有相同的hash,只有不可变的对象才能被hash,如数字、字符串、frozenset等,而list、set等不能被hash;
help([object]):调用内置的帮助系统。(这个函数主要用于交互式使用。)如果没有参数,在解释器的控制台启动交互式帮助系统。如果参数是个字符串,该字符串被当作模块名,函数名,类名,方法名,关键字或者文档主题而被查询,在控制台上打印帮助页面。如果参数是其它某种对象,生成关于对象的帮助页面。
hex(x):将一个整数转换成一个小写的十六进制字符串。结果以“0x”为前缀;
id(object):返回对象的“标识”。This is an integer which is guaranteed to be unique and constant for this object during its lifetime. 生命期不重叠的两个对象可以有相同的id()值。CPython实现细节: 这是对象的内存地址;
input([prompt]):如果有prompt参数,则将它输出到标准输出且不带换行;
class int(x, base=10):返回一个由数值或字符串 x 转换而成的整数,如果省略参数,则返回 0;
isinstance(object, classinfo):如果参数object 是参数classinfo 的一个实例;或者是其一个(直接的、间接的或者virtual)子类的实例,返回真;
issubclass(class, classinfo):如果class是classinfo的子类(直接的,间接的,或者virtual) ,返回真;
iter(object[, sentinel]):返回一个iterator对象。根据有无第二个参数,对第一个参数的解释相差很大;
len(s):返回一个对象的长度 (元素的个数) . 参数可以是序列(如字符串,字节,元组,列表或者范围)或者集合(如字典,集合或者固定集合);
map(function, iterable, …):通过定义可以看到,这个函数的第一个参数是一个函数,剩下的参数是一个或多个序列,返回值是一个集合。function可以理解为是一个一对一或多对一函数,map的作用是以参数序列中的每一个元素调用function函数,返回包含每次function函数返回值的list;
max(iterable, *[, key, default])\max(arg1, arg2, *args[, key]):返回可迭代的对象中的最大的元素,或者返回2个或多个参数中的最大的参数;
min(iterable, *[, key, default])\min(arg1, arg2, *args[, key]):返回可迭代的对象中的最小的元素,或者返回2个或多个参数中的最小的参数;
next(iterator[, default]):Retrieve the next item from the iterator by calling its next() method;
oct(x):将一个整数转换成一个八进制字符串;
open(file, mode=’r’, buffering=-1, encoding=None, errors=None, newline=None, closefd=True, opener=None):Open file and return a corresponding file object. If the file cannot be opened, an OSError is raised.
reversed(seq):返回一个反向迭代器;
class slice(stop)、class slice(start, stop[, step]):返回一个slice对象,表示由索引range(start, stop, step)指出的集合,切片对象具有只读属性start、stop和step,它们仅仅返回参数的值;
Exception hierarchy
BaseException
+– SystemExit
+– KeyboardInterrupt
+– GeneratorExit
+– Exception
+– StopIteration
+– ArithmeticError
| +– FloatingPointError
| +– OverflowError
| +– ZeroDivisionError
+– AssertionError
+– AttributeError
+– BufferError
+– EOFError
+– ImportError
+– LookupError
| +– IndexError
| +– KeyError
+– MemoryError
+– NameError
| +– UnboundLocalError
+– OSError
| +– BlockingIOError
| +– ChildProcessError
| +– ConnectionError
| | +– BrokenPipeError
| | +– ConnectionAbortedError
| | +– ConnectionRefusedError
| | +– ConnectionResetError
| +– FileExistsError
| +– FileNotFoundError
| +– InterruptedError
| +– IsADirectoryError
| +– NotADirectoryError
| +– PermissionError
| +– ProcessLookupError
| +– TimeoutError
+– ReferenceError
+– RuntimeError
| +– NotImplementedError
+– SyntaxError
| +– IndentationError
| +– TabError
+– SystemError
+– TypeError
+– ValueError
| +– UnicodeError
| +– UnicodeDecodeError
| +– UnicodeEncodeError
| +– UnicodeTranslateError
+– Warning
+– DeprecationWarning
+– PendingDeprecationWarning
+– RuntimeWarning
+– SyntaxWarning
+– UserWarning
+– FutureWarning
+– ImportWarning
+– UnicodeWarning
+– BytesWarning
+– ResourceWarning