最近在自己玩tensorflow和写爬虫的时候经常被推荐python,本来是对这门语言特别无感的,但是发现这东西实用性还是挺强的,突然感兴趣起来。回国正好有一些时间,乘机买了2本书系统的学习下。本门就是学习过程中记录下一些常用方法和一些特点,以备之后使用时查询。
- 原始字符串:print(r”c:\news”),将不会\n转译成空行
- 字符串切片和索引:
- str.index(“x”),返回位置
- str[2:9],返回2-9的切片字符串,还可以str[:9]或者str[2:],切忌切片不包含最后一个数字,也就是这里不包括9
- in可以判断是否在str中,如 “p” in str, 返回true or false
- 格式化输出,str.format(),这里东西比较负责,建议使用的时候查下文档
- 常用字符串方法:
- str.isalpha()
- str.split(),分割by
- str.strip(),去除左右的空格
- join(),链接字符串,如”.”.join(array)
- 常用array的方法:
- array.extend(array2)
- array.append(array2),此为原始修改,也就是并非增加array2,而是将他作为整体插入
- array.insert(i,x),在i的位置插入
- array.remove(x),删除无返回
- array.pop(),删除最后一个,然后返回,或者array.pop([i]),删除第i个,并返回
- 元组(tuple),字典和集合的方法比较杂碎,需要在实际应用的时候复习下
- 概念分清楚,string, list, dict, tuple, set
- 布尔判断:
- 空的返回false,空格(string)返回 true
a = " " bool(a) // true a = "" bool(a) bool([]) bool({}) // false
- 空的返回false,空格(string)返回 true
- 三元操作符:: A = Y if X else Z // X成立 A=Y 不然A=Z
- for i in range(len(names)): print(names[i]) // 相当于 range(x),比如name长度是5,等于 i in [0,1,2,3,4]
- print() 默认是end =’/n’,可以使用print(x, end=’xxx’)来代替
- for loop:
- 字典:for k,v in d.items(): print(k + v)
- 数字不可迭代
- 判断是否能迭代:isinstance(x, collections.Iterable)
- range:range(start, stop, step),start默认为0,stop必须写(所以range(9)就是0-9),而step默认是1不能为0
- zip():可以柔和两个array(长度以以短的为准),反向zip(*x)
- enumerate():for i, string in enumerate(x),输出index和数据
week = ['monday', 'tuesday'] for (i, day) in enumerate(week): print(day + ' is ' + week(i) // monday is 0 // tuesday is 1
- 行内赋值: s = [x**2 for x in range(1,10)] // 输出[1,4,9,16,25,36,49,64,81]
- 打开文件open()几个常用的模式:
- w:可写,如果文件存在,则覆盖
- a:可写,从文件末尾开始写,不存在则创建
- with open(),可以不关闭,兼具了try final功能
- 函数
- def foo(x,*arg) , *arg会收到一个空的元组
- def foo(**arg), **arg会得到字典类型数据
- lambda – g= lambda x,y : x+y // g(3,4) == 7
- map(func, seq) – 将seq的元素按顺序放到func里面
- filter() – filter(lambda x: x>0, numbers)
- 继承 class Person(FatherClass):
- 装饰器@classmethod/@staticmethod/@property……
- 继承中super的用途
- 双下滑的变量为私有变量,不被外部访问