CS61A 学习历程
范围(range)
语法
range(startNum,endNum-1)
是的,这看起来有些奇怪,但请切记endNum-1这一回事!!
如果你想要范围1~10的话,请输入:range(1,11)而不是range(1,10)!!!
例如:
in put :
range(1,3)
out put :
[1,2]
使用
range可以搭配数组一起使用:
odd = [2,4,6,8,10,12]
in put :
[odd[i] for i in range(1,3)]
//或是
odd[1:3]
这里提到了for的一个用法,该语句意思是依次提取列表odd中第i个值,i的值分别是范围1~2(即提取odd[1],odd[2])
另外,记得列表是从第0个开始的
out put:
[4,6]
搭配函数使用:
in put:
max(range(5)) 等同于 max(0,1,2,3,4)
out put:
4
这里提到了max函数,还有个更好玩的特性:
in put:
max(range(10),key = lamba x: 7 -(x-4)*(x-2))
//意思是x的取值范围为0~9,key等于关于x的表达式7 -(x-4)*(x-2),x取所有范围的值计算后的最大值
//(lamba x: 7 -(x-4)*(x-2)) (3) = 8
//(lamba x: 7 -(x-4)*(x-2)) (2) = 7
//(lamba x: 7 -(x-4)*(x-2)) (4) = 7
out put:
3
一些特性
若不声明startNum,则默认为从0开始
若不声明endNum,则默认范围至末尾为止
in put :
odd[1:3]
odd[:3]
odd[1:]
odd[:]
out put:
[4,6]
[2,4,6]
[4,6,8,10,12]
[2,4,6,8,10,12]
判断(bool)
和其他语言类似,具体用法不再赘述,值得一提的是,Py里bool函数有些有趣的用法:
in put:
[x<5 for x in range(5)]
[x<4 for x in range(5)]
out put:
[ture,ture,ture,ture,ture,ture]
[ture,ture,ture,ture,ture,false]
字符串(string)
使用 ‘ ’或是””” “”“或是”” “”标识
其中,”””可以跨行使用
还是和其他语言类似,还是有一些特殊的用法……:
常规的用法中:’curry = lambda f : lambda x : lambda y:f(x,y)’只是普通的字符串
但是可以使用exec语法来执行字符串中的内容
in put:
exec('curry = lambda f : lambda x : lambda y:f(x,y)')
curry(add)(3)(4)
out put:
7
字符串的一些特性:
可以用类似列表的方法来操作字符串:
in put:
city = 'GuanDong'
city[3]
len(city)
out put:
'n'
8
还有些更方便的用法,如果想查找字符串内是否包含某些值:
in put:
'C++'in 'C++ is the best language'
'C++'in 'Python is the best language'
in函数使用时,若是查找字符串则可以查找连续的字母,但若是在数组中,则只能查找一个元素:
234 in [1,2,3,4,5]
[2,3,4] in [1,2,3,4,5]
out put:
true
false
false
false
CS61A 学习历程
http://example.com/year/01/24/CS61A-学习历程/