最初是在coursera上看的Python讲课,后来在看Stanford Fei-fei Li的卷积神经网络时看到Python Numpy教程,觉得简洁明了,就当笔记记录下来了。本处主要介绍以下几个方面:
python的基本数据类型包括:整型、浮点型、布尔值和字符串。这些数据类型的操作与大多数高级语言类似:
x=3 # 无需定义数据类型
print type(x) # 输出<type 'int'>
y=2.5
print type(y) # 输出<type 'float'>
常见操作符:
操作符 | 结果 | 操作符 | 结果 | |
---|---|---|---|---|
x+y | 求和 | x-y | 求差 | |
x*y | 求积 | x/y | 求商 | |
x//y | 商的整数 | x%y | 求余 | |
-x | 求反 | abs(x) | 绝对值 | |
pow(x,y) | xy | x**y | xy |
注:Python常见操作中没有自加 ++ 和自减 −− 符号
t = True
f = False
print type(t) # 输出<type 'bool'>
print t and f # 逻辑“与”; 输出"False"
print t or f # 逻辑“或”; 输出"True"
print not t # 逻辑“非”; 输出"False"
print t != f # 逻辑“异或”;输出"True"
在这里我们可以看到,其他语言中用的&&在Python中会报错,不适用。
hello = 'hello' # 字符串可以使用单引号
world = "world" # 也可以使用双引号,并不用事先规定变量的名字
print hello # 输出"hello"
print len(hello) # 字符串长度; 输出"5"
hw = hello + ' ' + world # 字符串拼接
print hw # 输出 "hello world"
hw12 = '%s %s %d' % (hello, world, 12) #转换为字符串格式
print hw12 # 输出 "hello world 12"
由图可见,Python的字符串具有强大的内置函数,更方便自然语言处理。更多更有效的内置函数操作可以看这个文档。
Python包含有多个内置的容器:列表、词典、集合和元组。
xs = [3, 1, 2] # 创建列表
print xs, xs[2] # 输出 "[3, 1, 2] 2"
print xs[-1] # 负下标指示列表最后一个元素;输出"2"
xs[2] = 'foo' # 列表能够包含不同的数据类型
print xs # 输出"[3, 1, 'foo']"
xs.append('bar') # 在列表后面增加新的数据
print xs # 输出"[3, 1, 'foo','bar']"
x = xs.pop() # 移除列表中最后的元素
print x, xs # 输出 "bar [3, 1, 'foo']"
关于列表的详细内置函数可以参考之前的文档。,其中最常见的比较容易混淆的内置函数是append(L)和extend(L)。前者是将L作为整体加入到原列表中,而后者则是将L变量中的所有元素加入到原变量中,对比见下图:
除了基本的访问外,Python中的列表还提供了类似数组的访问方式:
nums = range(5) # 随机产生一个包含5个整数的列表
print nums # 输出"[0, 1, 2, 3, 4]"
print nums[2:4] # 从2到4的索引(不包含4);输出"[2, 3]"
print nums[2:] # 从2到最后的索引;输出"[2, 3, 4]"
print nums[:2] # 从列表起始到2的索引(exclusive);输出"[0, 1]"
print nums[:] #输出["0, 1, 2, 3, 4]"
nums[2:4] = [8, 9] # 修改2-4(不包含4)的数据
print nums # 输出"[0, 1, 8, 8, 4]"
dict1 = {'name' : 'Lyndon', 'age' : 24, 'sex' : 'Male'} #创建字典
print type(dict1) #输出""
print dict1['name'] #输出"lyndon"
dict1['Age']=24 #创建新的字典元素
print dict1['Age'] #输出"24"
del dict1['Age'] #删除元素
字典本身也带有很多内置函数,具体可以查看文档。
animals = {'cat', 'dog'}
print 'cat' in animals # 检查元素'cat'是否在集合中;输出"True"
animals.add('fish') # 增加元素到集合
print len(animals) # 集合中元素的数目; 输出"3"
animals.add('cat') # 已经存在的元素不会被添加
print len(animals) # 输出"3"
animals.remove('cat') # 从集合中移除元素
print len(animals) # 输出"2"
集合也包含一些简单的内置操作函数,具体可以查看文档。
Python中的顺序结构、条件结构和循环结构与常见高级语言比较类似,还是比较容易理解。不过Python中一定要注意的就是整个结构的作用域是通过缩进实现的,所以在编写Python条件、循环等程序时,一定要注意缩进。
基本表达:
if x>0:
print 'x is positive'
(本处用ipython notebook实现,方便函数和结构语句的查看)
常见的比较符:>(大于),>=(大于等于),<(小于),<=(小于等于),==(等于),!=(不等于),and(与),or(或),not(非)
组合结构:
x=3
y=4
if x==y:
print 'x and y are equal'
elif x>y:
print 'x is greater than y'
else:
print 'x is less than y'
输出:
此外,再介绍一个比较好用的错误代码处理结构Try/Except
hours = raw_input("Enter Hours:") #输入工作时间
rate = raw_input("Enter Rate:") #输入单位时间工资
try:
h = float(hours) #如果是数字转换成浮点型数据
r = float(rate)
except:
print 'Error. Invalid entry.' #否则输出错误
quit() #退出程序
print 'Pay:',h*r #如果都正确,输出工资
while循环:注意缩进和终止条件。
n=5
while n>0:
print n #输出数据
n = n-1 #条件减少
for 循环:for循环在Python中似乎更常用,可以和各种容器、数组等组合使用
nums = [5,4,3,2,1]
for i in range(len(nums)): # 类似于C语言中的循环,i从0到4
print nums[i] # 输出列表中数
print 'done!'
for i in nums: #直接输出列表
print i
squares = [i**2 for i in nums]
print squares
# 列表
animals =['cat','dog','monkey']
for animal in animals:
print animal
#字典
d = {'person': 2, 'cat': 4, 'spider': 8}
for animal in d: #i是字典中的关键字
legs = d[animal]
print 'A %s has %d legs' % (animal, legs)
输出:
此外循环中常见的两个关键字break和continue在Python中也具有相同的功能。break直接跳出循环,而continue则是跳出本次循环,继续循环的内容。我们可以将上面的关系融合成一个整体的小程序。
while True:
hours = raw_input("Enter Hours:") #输入工作时间
rate = raw_input("Enter Rate:") #输入单位时间工资
if hours =='done' or rate =='done':
print "The program is done!"
break #如果输入“done”,表示程序结束,直接退出
else:
try:
h = float(hours) #如果是数字转换成浮点型数据
r = float(rate)
except:
print 'Error. Invalid entry.Please enter a number.' #否则输出错误
continue #退出本次循环,继续输入
print 'Pay:',h*r #如果都正确,输出工资
输入输出:
当我们输入的不是数字时,程序转到except,输出”Error. Invalid entry.Please enter a number.”然后转到continue,跳出本次循环,继续输入。而当我们输入’done‘时,程序满足if语句的条件,先输出“The program is done!”,然后执行break,直接跳出循环。另外,如果有两个循环嵌套,而break在内层循环,则执行break时只能跳出内层循环。
def sign(x):
if x > 0:
return 'positive'
elif x < 0:
return 'negative'
else:
return 'zero'
for x in [-1, 0, 1]:
print sign(x)
输出:
先定义了函数sign(x),带参数。def是函数定义关键字。需要判断数字的正负时,直接调用该函数即可。在同一个文件中,函数可以直接在前面定义,然后在主函数中调用即可。但是,当调用别的文件中的函数时,不能直接调用,需要import,后面再介绍。
def Hello(): #子函数
str="Hello world"
print(str);
if __name__=="__main__": #主函数
print("main")
Hello() #调用
输出:
这里只是简单介绍了Python中函数的结构,更详细内容,参考官方文档。
class Greeter:
# 构造函数
def __init__(self, name):
self.name = name # 创建实例变量
# 函数实例
def greet(self, loud=False):
if loud:
print 'HELLO, %s!' % self.name.upper()
else:
print 'Hello, %s' % self.name
def Bye(self, loud=False):
if loud:
print 'GOOD BYE, %s!' % self.name.upper()
else:
print 'Good bye, %s' % self.name
g = Greeter('Fred') # 构建类的实例
g.greet() # 调用函数
g.greet(loud=True) # 调用函数
g.Bye()
g.Bye(loud=True)