from 散沙python
- 字符串单引号与双引号区别(三引号)
- type与isinstance区别
- s = str.split()返回列表 ‘,’.join(s) strip()清洗\n\t(包括’\n’, ‘\r’, ‘\t’, ’ ‘)
- 要改变字符串特定位置字符,bytearray(str)
- range(start, end , step)与字符串切片类似
- enumerate方法遍历
- 深浅copy L2 = L1[:]切片操作后则不指向同一地址。
- 切片技术应用于所有的序列,包括:列表、字符串、元祖
- 深浅拷贝,即可用于序列,也可用于字典
- 深浅拷贝都是对源对象的复制,占用不同的内存空间
- 如果源对象只有一级目录的话,源做任何改动,不影响深浅拷贝对象
- 如果源对象不止一级目录的话,源做任何改动,都要影响浅拷贝,但不影响深拷贝
- 序列对象的切片其实是浅拷贝,即只拷贝顶级的对象
- 字典对应键对应唯一值(可以为列表形式多值或字典形式等)
- 列表.append;列表.pop() ;列表.pop(0) ;列表.extend(列表(可迭代的)) ;列表.remove(‘xxx’) ;列表.reverse(相当于[::-1]) ;列表.sort; sorted.(列表)(内置方法);in方法;list(字符串)转化成列表形式
- 元组不可变;del list ;del turple删除;元组合列表支持+ * in等方法;可list(turple)变为可变类型
- 集合set,不重复,in方法 添加set.add(‘xx’);update 增加一组元素;remove删除;frozenset不可修改;包括相等== 子集< 超集> 交& 并| 差- 异或^
字典 可变,key无序要哈希(字典列表不可哈希),value任意类型;dic.keys() values() items();dic.iterkeys() itervalues() iteritems();通过key索引不能通过1 2 3有序索引;has_key(‘key’)或者in判断 ‘key’ in dic:;dic.get(key,default = None)如果不存在key 返回default;del dic[‘key’];
{x for x in set(range(10)) if x % 2 == 0 } comprehensions 解析式
- ‘{0:<12} is something ‘.format() <12控制格式
- print[ (x+1, y+1) for x in range(4) for y in range(4) if x < y]
- 使用小括号解析()返回生成器,不占用中括号列表[]那么多内存 不一次性将这个列表放在内存中
- 解析大括号{}生成集合和字典 随意{ idx : i**2 for idx , i in enumerate(x) }
- zip() sorted 返回列表 enumerate返回生成器
- zip拉链函数 接受相同长度的列表,组合后返回包含元组的列表
- zip([(‘a’,’b’),(‘c’,’d’)]) 返回参数 得到 [(‘a’,’b’,’c’,’d’)] 将内容变成参数而不是本身
- max
Base_damage = {'A': 65, 'B': 73, 'c': 10} \
max = max(zip(Base_damage.itervalues(), Base_damage.iterkeys()))
print(max)
('B':63)
- *传参数 若def function(x, y z) 调用function( * [1,2,3]) 则分别传 1 2 3 给x y z
- ** 赋值 def function(x , y, z ) 调用function( ** {‘x’:10, ‘z’:3} )
- 浅拷贝1.切片2.工厂list转化3.copy 不能内层修改值(还需要理解)见 深浅copy 及11分22秒左右。我的理解是浅拷贝虽然修改了列表的地址,但是深层第二层列表里面的第二项值,依然指向原来的地址,变则全变。
- 尽量避免可变类型更改,尽量使用不可变类型
- 异常 try: xxx except Excetion,error: error存储Exception抛出的异常 info = sys.exc_info()记录上一次异常类型,finally:xxx