-
如果一个字符串包含很多需要转义的字符,对每一个字符都进行转义会很麻烦。为了避免这种情况,我们可以在字符串前面加个前缀
r
,表示这是一个 raw 字符串,里面的字符就不需要转义了。但是
r'...'
表示法不能表示多行字符串,也不能表示包含'
和"
的字符串(为什么?)如果要表示多行字符串,可以用
'''...'''
表示:如果要表示多行字符串,可以用
'''...'''
表示:'''Line 1 Line 2 Line 3'''
上面这个字符串的表示方法和下面的是完全一样的:
'Line 1\nLine 2\nLine 3'
还可以在多行字符串前面添加
r
,把这个多行字符串也变成一个raw字符串:r'''Python is created by "Guido". It is free and easy to learn. Let's start learn Python in imooc!'''
查看全部 -
Python解释器在做布尔运算时,只要能提前确定计算结果,它就不会往后算了,直接返回结果。
FE,a and b,a为true,输出a,若a为false则不输出
a or b,a为true,输出a,若a为false,b为true输出b
均为false,不输出
查看全部 -
如果要表示多行字符串,可以用
'''...'''
表示:'''Line 1 Line 2 Line 3'''
'Line 1\nLine 2\nLine 3'与上完全相同
查看全部 -
吧新的元素增加到set 中,用set 的add()方法。
如:
>>>s = set ([1,2,3])
>>>s.add(4)
>>>print s
>>>set = ([1,2,3,4]),如果添加是元素已经在set 中,就加不上去;
删除set 中的元素,用Set的remove()方法;如果删除的元素不存在,remove()会报错。
查看全部 -
切片:Slice,取指定索引范围,L[0:3]表示,从索引0开始取,直到索引3为止,但不包括索引3。
L[::n]表示每n个取一个
sum()函数可以对list、tuple求和
range()函数可以创建一个数列
查看全部 -
可变参数:函数能接收任意个参数(0/1/多个),def average(*args)
查看全部 -
set 内部结构和list 很像,区别在于set 不存储value;
set 存储的 元素和dect 的key 类似,必须是不变对象,因此可变对象不能放入list中;
set 的元素也是没有顺序的;
查看全部 -
默认参数的作用是简化调用,只能定义在必需参数的后面,如int('123')默认转换为十进制,int('123',8)转换为8进制
查看全部 -
存储的是无序集合。
访问set 的某个元素实际上就是判断一个元素是否在set中。
查看全部 -
print 可以用来判断真或错
查看全部 -
使用递归函数需要注意防止栈溢出。在计算机中,函数调用是通过栈(stack)这种数据结构实现的,每当进入一个函数调用,栈就会加一层栈帧,每当函数返回,栈就会减一层栈帧。由于栈的大小不是无限的,所以,递归调用的次数过多,会导致栈溢出。可以试试计算 fact(10000)。
查看全部 -
dict 对象的 items() 方法返回的值: >>> d = { 'Adam': 95, 'Lisa': 85, 'Bart': 59 } >>> print d.items() [('Lisa', 85), ('Adam', 95), ('Bart', 59)]
可以看到,items() 方法把dict对象转换成了包含tuple的list,我们对这个list进行迭代,可以同时获得key和value:
>>> for key, value in d.items(): ... print key, ':', value ... Lisa : 85 Adam : 95 Bart : 59
和 values() 有一个 itervalues() 类似, items() 也有一个对应的 iteritems(),iteritems() 不把dict转换成list,而是在迭代过程中不断给出 tuple,所以, iteritems() 不占用额外的内存。
查看全部 -
有点难 迭代dict的value我们已经了解了dict对象本身就是可迭代对象,用 for 循环直接迭代 dict,可以每次拿到dict的一个key。如果我们希望迭代 dict 对象的value,应该怎么做?dict 对象有一个 values() 方法,这个方法把dict转换成一个包含所有value的list,这样,我们迭代的就是 dict的每一个 value:d = { 'Adam': 95, 'Lisa': 85, 'Bart': 59 } print d.values() # [85, 95, 59] for v in d.values(): print v # 85 # 95 # 59 如果仔细阅读Python的文档,还可以发现,dict除了values()方法外,还有一个 itervalues() 方法,用 itervalues() 方法替代 values() 方法,迭代效果完全一样:d = { 'Adam': 95, 'Lisa': 85, 'Bart': 59 } print d.itervalues() # <dictionary-valueiterator object at 0x106adbb50> for v in d.itervalues(): print v # 85 # 95 # 59 那这两个方法有何不同之处呢?1. values() 方法实际上把一个 dict 转换成了包含 value 的list。2. 但是 itervalues() 方法不会转换,它会在迭代过程中依次从 dict 中取出 value,所以 itervalues() 方法比 values() 方法节省了生成 list 所需的内存。3. 打印 itervalues() 发现它返回一个 <dictionary-valueiterator> 对象,这说明在Python中,for 循环可作用的迭代对象远不止 list,tuple,str,unicode,dict等,任何可迭代对象都可以作用于for循环,而内部如何迭代我们通常并不用关心。如果一个对象说自己可迭代,那我们就直接用 for 循环去迭代它,可见,迭代是一种抽象的数据操作,它不对迭代对象内部的数据有任何要求。
查看全部 -
enumerate() 函数: 列举(枚举)函数 >>> L = ['Adam', 'Lisa', 'Bart', 'Paul'] >>> for index, name in enumerate(L):... print index, '-', name ...
查看全部 -
递归:函数在内部调用自身,使用递归函数需注意防止栈溢出,函数调用就会加一层栈帧,函数返回会减一层栈帧。栈的大小有限,递归次数太多会导致栈溢出。
阶乘 n! = 1 * 2 * 3 * ... * n,n!=n*(n-1)!,用fact()函数表示,fact(n)=n*fact(n-1)
查看全部
举报