-
布尔运算 and,or,not,None(代表空值)
查看全部 -
Unicode 字符串是统一所有文字的编码。 用 u'...' 表示
查看全部 -
L[0:3]表示,从索引0开始取,直到索引3为止,但不包括索引3。
查看全部 -
可变参数的名字前面有个 * 号
查看全部 -
'Bob said \"I\'m OK\".'
查看全部 -
使用递归函数需要注意防止栈溢出。在计算机中,函数调用是通过栈(stack)这种数据结构实现的,每当进入一个函数调用,栈就会加一层栈帧,每当函数返回,栈就会减一层栈帧。由于栈的大小不是无限的,所以,递归调用的次数过多,会导致栈溢出。
查看全部 -
任务
假设新来一名学生Paul,Paul 同学的成绩比Bart好,但是比Lisa差,他应该排到第三名的位置,请用代码实现。
L = ['Adam', 'Lisa', 'Bart']
L.insert(2,'paul')
print L
查看全部 -
Python之添加新元素
在,班里有3名同学:
>>> L = ['Adam', 'Lisa', 'Bart']
今天,班里转来一名新同学 Paul,如何把新同学添加到现有的 list 中呢?
第一个办法是用 list 的
append()
方法,把新同学追加到 list 的末尾:>>> L = ['Adam', 'Lisa', 'Bart'] >>> L.append('Paul') >>> print L ['Adam', 'Lisa', 'Bart', 'Paul']
append()总是把新的元素添加到 list 的尾部。
如果 Paul 同学表示自己总是考满分,要求添加到第一的位置,怎么办?
方法是用list的
insert()
方法,它接受两个参数,第一个参数是索引号,第二个参数是待添加的新元素:>>> L = ['Adam', 'Lisa', 'Bart'] >>> L.insert(0, 'Paul') >>> print L ['Paul', 'Adam', 'Lisa', 'Bart']
L.insert(0, 'Paul') 的意思是,'Paul'将被添加到索引为 0 的位置上(也就是第一个),而原来索引为 0 的Adam同学,以及后面的所有同学,都自动向后移动一位。
查看全部 -
由于list是一个有序集合,所以,我们可以用一个list按分数从高到低表示出班里的3个同学:
>>> L = ['Adam', 'Lisa', 'Bart']
那我们如何从list中获取指定第 N 名的同学呢?方法是通过索引来获取list中的指定元素。
需要特别注意的是,索引从 0 开始,也就是说,第一个元素的索引是0,第二个元素的索引是1,以此类推。
因此,要打印第一名同学的名字,用 L[0]:
>>> print L[0] Adam
使用索引时,千万注意不要越界。
查看全部 -
Python内置的一种数据类型是列表:
list
。list是一种有序的集合,可以随时添加和删除其中的元素。list是数学意义上的有序集合,也就是说,list中的元素是按照顺序排列的。
构造list非常简单,按照上面的代码,直接用
[ ]
把list的所有元素都括起来,就是一个list对象。通常,我们会把list赋值给一个变量,这样,就可以通过变量来引用list:>>> classmates = ['Michael', 'Bob', 'Tracy'] >>> classmates # 打印classmates变量的内容 ['Michael', 'Bob', 'Tracy']
由于Python是动态语言,所以list中包含的元素并不要求都必须是同一种数据类型,我们完全可以在list中包含各种数据:
>>> L = ['Michael', 100, True]
一个元素也没有的list,就是空list:
>>> empty_list = []
查看全部 -
a = 'python' print 'hello,', a or 'world' b = ''print 'hello,', b or 'world'
解释:
通过 or 运算,可以把空字符串“变成”默认字符串,而非空字符串保持不变。
查看全部 -
要解释上述结果,又涉及到 and 和 or 运算的一条重要法则:短路计算。
1. 在计算
a and b
时,如果 a 是 False,则根据与运算法则,整个结果必定为 False,因此返回 a;如果 a 是 True,则整个计算结果必定取决与 b,因此返回 b。2. 在计算
a or b
时,如果 a 是 True,则根据或运算法则,整个计算结果必定为 True,因此返回 a;如果 a 是 False,则整个计算结果必定取决于 b,因此返回 b。所以Python解释器在做布尔运算时,只要能提前确定计算结果,它就不会往后算了,直接返回结果。
查看全部 -
在Python中,布尔类型还可以与其他数据类型做 and、or和not运算,请看下面的代码:
a = True print a and 'a=T' or 'a=F'
计算结果不是布尔类型,而是字符串 'a=T',这是为什么呢?
因为Python把
0
、空字符串''
和None
看成 False,其他数值和非空字符串都看成 True,所以:True and 'a=T' 计算结果是 'a=T' 继续计算 'a=T' or 'a=F' 计算结果还是 'a=T'
查看全部 -
与运算:只有两个布尔值都为 True 时,计算结果才为 True。
或运算:只要有一个布尔值为 True,计算结果就是 True
非运算:把True变为False,或者把False变为True:
not True # ==> False not False # ==> True
布尔运算在计算机中用来做条件判断,根据计算结果为True或者False,计算机可以自动执行不同的后续代码。
查看全部 -
6-3 Python中dict的特点
1. dict和list的区别:
dict查找速度快,但是占用内存大。
list查找速度慢,但是占用内存小。
2. dict按key查找,所以在一个dict中,key不能重复。
3. dict的特点:储存的key-value序对是没有顺序的。这和list不一样:
d = {
'Adam' : 95,
'Lisa' : 85,
'Bart' : 59
}
当我们试图打印这个dict时:
>>> print d
{'Lisa' : 85, 'Adam' : 95, 'Bart' : 59}:
打印的顺序不一定是我们创建时的顺序,而且,不用的机器打印的顺序都可能不同,这说明dict内部是无序的,不能用dict存储有序的集合。
4. dict的第三个特点是作为key的元素必须不可变,python的基本类型如字符串,整数,浮点数都是不可变的,都可以作为key。但是list是可变的,就不能作为key。
可以试试用list作为key是会报什么样的错误。
不可变这个限制仅作用于key,value是否可变无所谓。
{ '123': [1, 2, 3], # key 是 str,value是list 123: '123', # key 是 int,value 是 str ('a', 'b'): True # key 是 tuple,并且tuple的每个元素都是不可变对象,value是 boolean}
查看全部
举报