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-学习历程/
作者
Magic_Cat
发布于
2025年1月24日
许可协议