最近在起步学Python,聚合一下这个过程中搜集的资源和对一些基本知识做个小总结,语法基于Python3,方便以后查找。
Python官方文档 https://docs.python.org/3/index.html
不错的基础课程(基本语法、算法、建模) http://open.163.com/special/opencourse/bianchengdaolun.html
不错的在线教程 http://www.liaoxuefeng.com/wiki/0014316089557264a6b348958f449949df42a6d3a2e542c000
练习 http://www.pythontip.com/
以下是整理常用可能遗忘的基础点
输入
python3中的输入是input(),获得用户输入的字符串
>>> a = input("please input your name: ")
please input your name: Wu
>>> a
'Wu'
如果需获得用户输入的数据,加入强制类型转换即可
>>> a = int(input("please input an integer: "))
please input an integer: 55
>>> a
55
在python2中获得输入字符串的函数是raw_input(),在python3中已将其移除
标准库
对于标准库的用法,随着python版本的更新而不断更新,如需要应在官网查看更新,如在python2中,使用字符串操作需要导入,如from string import *
,在python3中,则不需要,可以直接使用
>>> str.find("atgacatgcacaagtatgcat", "atgc") #查找关键字atgc在目标序列中的位置
5
官网的所有标准库用法说明 https://docs.python.org/3.6/library/
递归
用递归方法编程的要点:
1.确定达到条件退出的基本事件
2.确定每次递归的运算
3.确定递归的变量
def countSubStringMatchRecursive(target, key): #用递归方法求出关键字key在target中出现的次数
n = 0
return Recursive(target, key, n)
def Recursive(target, key, n):
a = str.find(target, key) #第二步,确定每次递归的运算
if a == -1: #第一步,确定条件退出的基本事件
return n
else:
n += 1
return Recursive(target[a+1:], key, n) #第三步,确定递归的变量
tuple与list
一言之,tuple的元素不能进行增删改,而list可以进行操作。 另外tuple的不变是指每个元素的指向不变,如果tuple里面的元素包含list,则也会改变(见标题链接)。如想不出现这种问题,则避免这种套用。
tuple和list可以相互转换
>>> list((1,2,3)) #tuple转换为list
[1, 2, 3]
>>> tuple([1,2,3]) #list转换为tuple
(1, 2, 3)
排序算法
比较几种排序算法对弄懂算法复杂度的等基本概念很有帮助,推荐一篇对算法总结不错的博客 http://www.cnblogs.com/feixuelove1009/p/6143539.html
异常处理
异常处理这部分目前还不是理解得很透彻,需要更多的实践来理解。这是一篇总结得比较好的博客 https://betacat.online/posts/2016-12-4-Python-exception-handling/
判断变量类型
判断变量类型有type()和isinstance()两种方式,不同之处在于
class A:
pass
class B(A):
pass
isinstance(A(), A) # returns True
type(A()) == A # returns True
isinstance(B(), A) # returns True
type(B()) == A # returns False
对于新式类则type方式无效,因此强烈建议用isinstance()判断而不用type()
其它一些遇到的问题
1.当tuple和list按索引读取元素时均用中括号,否则会报如下错误
TypeError: 'tuple' object is not callable
2.使用 in 判断元素是否在tuple内,in 的运算级比运算符要低
>>> 1 in (1,2,3) == True #没加括号时先计算后面,错误
False
>>> (1 in (1,2,3)) == True #正确
True