刚看完mit 的6.00x的课程,现在在这里总结一下学到的知识点:
思维导图等下补上:
(1)function(函数)
函数在python中是跟其他整形啊字符串啊等一样看成是一个对象,所以在python中,函数可以作为参数使用(这比某va好多了),示例如下:
def test(a):
return a
def go(f):
return f(5)
print go(test)
结果是:
(2)字符串:
python的字符串自带着实现了iterable接口,所以可以直接在循环中进行遍历,非常方便:
s = "fadfa"
for char in s:
print char
将会逐步输出字符串中的字母
string类型在python中可以看成是一个list使用
但是python字符串最神奇的还不是这里,最神奇的是python字符串可以使用简单的截取方法和copy方法,虽然这样每次都会在内存中分配一个新的对象,但是不得不说,非常方便,下面给出几种情况:
1.python中以0为从开头开始的字符,-1表示最后一个字符
s = "fadfa"
s[0:n] #it will return a string that only contain from 0 and less than n
p = s[:] # it will return a clone of s
p = s[0:-1] #it will return unless the last element
p = s[0:] #it will return from 0 to the end
p = s[:-1] #it will return from begin(0) until the last element
这是python中较为经典的对字符串的使用
注:python中无论是整型还是字符串型都是一个类然后产生instance,不是像类似与java那种分成primitive和类两种
(3)循环
python中有两种循环:
一种是for循环(与java中的for加强完全一样),另一种是while
#for
#range(integer) will return a sequence begin 0 until n -1
for char in range(n):
print char
for char in xrange(n):
print char
for char in sequence:
print char
while i < n:
print i
i += 1
这里的range与xrange都是起到同样返回一个从0到n-1的sequence的过程,不同在于xrange无论integer的范围有多大,都只是会每次访问这个值的时候才会去在内存中存储这个值,而range就是将一下子在内存中开辟一个连续的存储空间存储这个list,非常耗费内存,看看官方文檔:
(4)數據結構
數據結構主要分为三种类型:tuple,dictionary,list
tuple:(f,d)
dictionary:{key:value}
list:[]
下面来看看官方文档对这三个数据结构的解释:
可知tuple是不可变的,里面可以装任意类型的元素,并且可以使用,将两个tuple联合起来变成一个新的tuple
也可以使用,创建一个tuple,当你直接打出如下代码时,可以直接作出一个tuple
t = 1,
结果是:
下面再来看看list
注意的是在python中,stack何queue都是使用list
list可以直接使用这种形式来创建,更为关键的是,list是mutable的,就是可变的,所以我们可以对其进行赋值和添加元素list也可以通过+号来进行两个list的联合
t = [1,2]
s = [3,4,5]
a = s + t
我们可以看到结果为:
下面我们再看看dictionary,类似与java的map,它每个元素都是保存的key-value对,并且它的每个对的key都规定了必须是不可变的,所以dictionary中的key不能是list
dic是使用key来进行索引,而不是像tuple和list那样使用number来进行索引
必须注意的是从文档中可以看出,tuple里面必须不包含可变元素才可以是key
可以通过del方法去删除里面的一个元素
t = {1:'a'}
del t[1]
然后如果你想要得到其中的某个key,可以使用keys()方法返回key的一个list,然后在使用index得到: