Python学习从起飞到失事之路(一)
总述:最近重新捡起了在大学时代简单学习过的python语言,准备再重温一下基础的语法知识,不过大部分会是一些比较难记(对于本人,敬请谅解)的知识点,对于一些非常基础的使用或者内置函数等就不再介绍,并且打算以leetcode上的优秀的解题过程为核心,以此来增加python的熟悉程度。之后研究方向可能转化为自然语言处理,NPL这方面,后续也会出利用phthon对NPL模型搭建,调优等方面的使用。
基础语法/函数使用
1.得到输入的一个整数 //python默认输入的是字符!!!
n=int(input())2.得到多个输入的整数
a=list(map(int,input().split())) 这是一个变量
n,k=list(map(int,input().split())) 两个变量的话3.以指定字符连接字符转为一个新的字符串
a=str.join(sequence)
a=" “.join(map(str,b)) ‘’‘此前b为列表’’’
print(” ".join(str(i) for i in a)) //a为列表4.list类型数据可直接作为循环范围
如a=[1,2,3] 可以写for i in a:
若有递增加成,考虑再加变量,变量翻番5.对面列表元素的前n-1个,用切片表示为a[:-1],除过第一个的剩余为a[1:]
map(lambda x,y:y-x,a[:-1],a[1:])6.对于求中间数,列表中特殊的数,考虑先排序,利用边界查找的方法
while before > 0 and a[middle] == a[before-1]:#向左查找中间数相同的数,左边界
before-=1
while after < n-1 and a[middle] == a[after+1]:#向右查找,右边界
after+=1
if(before == (n-1-after)):#左右边界对称,中间数存在7.对于数组溢出的问题,比如len(b)==n,
那么对于b[i+1]这种,循环范围应为range(0,n-1),
对于b[i-1]这种,应为range(1,n)8. print 会自动在行末加上回车, 如果不需回车,只需在 print 语句的结尾添加一个逗号 , 并设置分隔符参数 end,就可以改变它的行为(i=[1,2,3])
如果不想换行
print(i,end=" ") 1 2 3 //加空格则以空格隔开
print(i,end=’’) 123 //"和‘同等效力
换行
print()9.如果需要输出结果与输入一一对应的话,考虑再加数组
a=list(map(int,input().split()))
b=[k]*n 按循环改变b的值10.绝对值函数
map(abs,a),11.count用法
str.count(a,0,40) //统计str中,a的数量12.枚举函数enumerate
seq = [‘one’, ‘two’, ‘three’]
for i, element in enumerate(seq,start): //start默认为0,即从0开始,也可改为1,下标从1开始
print i, element
0 one
1 two
2 three13.insert函数,index函数,remove函数,round函数,keys函数
a.insert(index,obj) //在a的index位置,插入obj
a.index(str,start,end) //在a中查找str,从start到end,如果在则返回索引
a.remove(b) //移除a中的第一个b
round(x,n) //将x四舍五入后,保留小数点后n位(有0则去掉),返回数值
dict.keys() //返回一个可迭代对象,如dict字典中的键值14.not用法
(1) not与逻辑判断句if连用,代表not后面的表达式为False的时候,执行冒号后面的语句。比如:
a = False
if not a: (这里因为a是False,所以not a就是True)
print “hello”
这里就能够输出结果hello15.以二维数组的方式输入
a=[[0]m for _ in range(n)] //n行m列,每个元素都是[0]
a=[[‘N’ for _ in range(n)] for _ in range(n)] //生成nn的的矩阵,每个矩阵都是N16.items,item函数
items:以列表返回可遍历的(键,值)元组数组
a.items()17.sort,sorted,reverse函数
sort,对表排序,但不改变表, a.sort()
sorted 返回一个新的排好序的表 b=sorted(a)
reverse =True 降序排列,=False,升序排列18.isinstance
isinstance(a,int) //如果a是int,则返回true19取模运算
python的取模是根据向下取整法的,而c/c++/java是基于向零取整的。
例如:
在python中 :-53除以10=-6 …7 所以python中 -53%10=7
在c语言中,-53除以10=-5 … -3 所以c语言中 -53%10=-3
(python3中, /是精确除法,//是向下取整除法,%是求模,四舍五入取整round, 向零取整int, 向下和向上取整函数math.floor, math.ceil)20溢出类问题,对可能的溢出,我们可以用位运算符来做,例如 数值范围为 [−231, 231 − 1]。对于正数,需要判断是否小于1<<31-1,对于负数,判断他的绝对值是否小于1<<31就行,这是python3的情况