-
空值None不是0查看全部
-
dict中 获取value
1. values() 方法实际上把一个 dict 转换成了包含 value 的list。
2. 但是 itervalues() 方法不会转换,它会在迭代过程中依次从 dict 中取出 value,所以 itervalues() 方法比 values() 方法节省了生成 list 所需的内存。
查看全部 -
任务
班里考试后,老师要统计平均成绩,已知4位同学的成绩用list表示如下:
L = [75, 92, 59, 68]
请利用for循环计算出平均成绩。
?不会了怎么办
利用一个sum变量累加就可以计算出总成绩。
参考代码:
L = [75, 92, 59, 68] sum = 0.0 for x in L: sum = sum + x print sum / 4
查看全部 -
创建包含1个元素的 tuple 呢?来试试:
>>> t = (1) >>> print t 1
好像哪里不对!t 不是 tuple ,而是整数1。为什么呢?
因为
()
既可以表示tuple,又可以作为括号表示运算时的优先级,结果 (1) 被Python解释器计算出结果 1,导致我们得到的不是tuple,而是整数 1。正是因为用()定义单元素的tuple有歧义,所以 Python 规定,单元素 tuple 要多加一个逗号“,”,这样就避免了歧义:
>>> t = (1,) >>> print t (1,)
Python在打印单元素tuple时,也自动添加了一个“,”,为了更明确地告诉你这是一个tuple。
多元素 tuple 加不加这个额外的“,”效果是一样的
查看全部 -
请用 for 循环遍历如下的dict,打印出 name: score 来。
d= { 'Adam': 95, 'Lisa': 85, 'Bart': 59 } for key in d: print key + ':', d[key]
查看全部 -
Python中dict的特点
dict的第一个特点是查找速度快,无论dict有10个元素还是10万个元素,查找速度都一样。
dict的第二个特点就是存储的key-value序对是没有顺序的!这和list不一样:
d = { 'Adam': 95, 'Lisa': 85, 'Bart': 59 }
当我们试图打印这个dict时:
>>> print d {'Lisa': 85, 'Adam': 95, 'Bart': 59}
dict的第三个特点是作为 key 的元素必须不可变
查看全部 -
Python内置的一种数据类型是列表:
list
。list是一种有序的集合,可以随时添加和删除其中的元素。比如,列出班里所有同学的名字,就可以用一个list表示:
>>> ['Michael', 'Bob', 'Tracy'] ['Michael', 'Bob', 'Tracy']
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 = []
查看全部 -
在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'
要解释上述结果,又涉及到 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解释器在做布尔运算时,只要能提前确定计算结果,它就不会往后算了,直接返回结果。
查看全部 -
变量名必须是大小写英文、数字和下划线(_)的组合,且不能用数字开头
查看全部 -
字符串还有一个编码问题。
因为计算机只能处理数字,如果要处理文本,就必须先把文本转换为数字才能处理。最早的计算机在设计时采用8个比特(bit)作为一个字节(byte),所以,一个字节能表示的最大的整数就是255(二进制11111111=十进制255),0 - 255被用来表示大小写英文字母、数字和一些符号,这个编码表被称为ASCII编码,比如大写字母 A 的编码是65,小写字母 z 的编码是122。
如果要表示中文,显然一个字节是不够的,至少需要两个字节,而且还不能和ASCII编码冲突,所以,中国制定了GB2312编码,用来把中文编进去。
类似的,日文和韩文等其他语言也有这个问题。为了统一所有文字的编码,Unicode应运而生。Unicode把所有语言都统一到一套编码里,这样就不会再有乱码问题了。
Unicode通常用两个字节表示一个字符,原有的英文编码从单字节变成双字节,只需要把高字节全部填为0就可以。
因为Python的诞生比Unicode标准发布的时间还要早,所以最早的Python只支持ASCII编码,普通的字符串'ABC'在Python内部都是ASCII编码的。
Python在后来添加了对Unicode的支持,以Unicode表示的字符串用u'...'表示,比如:
print u'中文' 中文
注意: 不加 u ,中文就不能正常显示。
Unicode字符串除了多了一个
u
之外,与普通字符串没啥区别,转义字符和多行表示法仍然有效:转义:
u'中文\n日文\n韩文'
多行:
u'''第一行 第二行'''
raw+多行:
ur'''Python的Unicode字符串支持"中文", "日文", "韩文"等多种语言'''
如果中文字符串在Python环境下遇到 UnicodeDecodeError,这是因为.py文件保存的格式有问题。可以在第一行添加注释
# -*- coding: utf-8 -*-
目的是告诉Python解释器,用UTF-8编码读取源代码。然后用Notepad++ 另存为... 并选择UTF-8格式保存。
查看全部 -
空值 none 默认为false查看全部
-
# -*- coding: utf-8 -*-
如果中文字符串在Python环境下遇到 UnicodeDecodeError,这是因为.py文件保存的格式有问题。可以在第一行添加注释
查看全部 -
请把下面的字符串用
r'''...'''
的形式改写,并用print打印出来:'\"To be, or not to be\": that is the question.\nWhether it\'s nobler in the mind to suffer.'
----------------------
print r'''"To be,or not to be":that is the question.
Whether it's nobler in the mind to suffer.'''
----------------
输完要检查,注意小符号
查看全部 -
元组的每个元素,指向永远不变,不能指向其他对象,但指向的对象,本身对象内部指向可以改变的
查看全部 -
但是
r'...'
表示法不能表示多行字符串,也不能表示包含'
和"
的字符串(为什么?)查看全部
举报