-
四、布尔值
布尔值和布尔代数的表示完全一致,一个布尔值只有
True
、False
两种值,要么是True
,要么是False
,在Python中,可以直接用True
、False
表示布尔值(请注意大小写),也可以通过布尔运算计算出来。布尔值可以用
and
、or
和not
运算。and
运算是与运算,只有所有都为 True,and运算结果才是 True。or
运算是或运算,只要其中有一个为 True,or 运算结果就是 True。not
运算是非运算,它是一个单目运算符,把 True 变成 False,False 变成 True。五、空值
空值是Python里一个特殊的值,用
None
表示。None不能理解为0,因为0是有意义的,而None是一个特殊的空值。此外,Python还提供了列表、字典等多种数据类型,还允许创建自定义数据类型,我们后面会继续讲到
查看全部 -
dict对象本身就是可迭代对象,用 for 循环直接迭代 dict,可以每次拿到dict的一个key。
values()方法
itervalues() 方法,用 itervalues() 方法替代 values() 方法,迭代效果完全一样
1. values() 方法实际上把一个 dict 转换成了包含 value 的list。2. 但是 itervalues() 方法不会转换,它会在迭代过程中依次从 dict 中取出 value,所以 itervalues() 方法比 values() 方法节省了生成 list 所需的内存。如果一个对象说自己可迭代,那我们就直接用 for 循环去迭代它,可见,迭代是一种抽象的数据操作,它不对迭代对象内部的数据有任何要求
d = { 'Adam': 95, 'Lisa': 85, 'Bart': 59 } print d.itervalues() #print d.values() # <dictionary-valueiterator object at 0x106adbb50
for v in d.itervalues(): #for v in d.values() print v # 85 # 95 # 59
同时迭代dict的key和value
items() 方法把dict对象转换成了包含tuple的list,我们对这个list进行迭代,可以同时获得key和value:
for key, value in d.items(): ... print key, ':', value ... Lisa : 85 Adam : 95 Bart : 59
items() 也有一个对应的 iteritems(),iteritems() 不把dict转换成list,而是在迭代过程中不断给出 tuple,所以, iteritems() 不占用额外的内存。
查看全部 -
enumerate() 函数:
>>> L = ['Adam', 'Lisa', 'Bart', 'Paul'] >>> for index, name in enumerate(L):... print index, '-', name ... 0 - Adam 1 - Lisa 2 - Bart 3 - Paul
迭代的每一个元素实际上是一个tuple:for t in enumerate(L): index = t[0] name = t[1] print index, '-', name enumerate() 函数自动把每个元素变成 (index, element) 这样的tuple,再迭代,就同时获得了索引和元素本身。
查看全部 -
如果我们想判断年龄在18岁以下时,打印出 'teenager',怎么办?
方法是再写一个 if:
if age < 18: print 'teenager'
或者用 not 运算:
if not age >= 18: print 'teenager'
细心的同学可以发现,这两种条件判断是“非此即彼”的,要么符合条件1,要么符合条件2,因此,完全可以用一个 if ... else ... 语句把它们统一起来:
if age >= 18: print 'adult' else: print 'teenager'
利用 if ... else ... 语句,我们可以根据条件表达式的值为 True 或者 False ,分别执行 if 代码块或者 else 代码块。
注意: else 后面有个“:”。
查看全部 -
注意: Python代码的缩进规则。具有相同缩进的代码被视为代码块,上面的3,4行 print 语句就构成一个代码块(但不包括第5行的print)。如果 if 语句判断为 True,就会执行这个代码块。
缩进请严格按照Python的习惯写法:4个空格,不要使用Tab,更不要混合Tab和空格,否则很容易造成因为缩进引起的语法错误。
注意: if 语句后接表达式,然后用
:
表示代码块开始。如果你在Python交互环境下敲代码,还要特别留意缩进,并且退出缩进需要多敲一行回车:
查看全部 -
tuple一开始指向的list并没有改成别的list,所以,tuple所谓的“不变”是说,tuple的每个元素,指向永远不变。即指向'a',就不能改成指向'b',指向一个list,就不能改成指向其他对象,但指向的这个list本身是可变的!
理解了“指向不变”后,要创建一个内容也不变的tuple怎么做?那就必须保证tuple的每一个元素本身也不能变。
查看全部 -
好像哪里不对!t 不是 tuple ,而是整数1。为什么呢?
因为
()
既可以表示tuple,又可以作为括号表示运算时的优先级,结果 (1) 被Python解释器计算出结果 1,导致我们得到的不是tuple,而是整数 1。正是因为用()定义单元素的tuple有歧义,所以 Python 规定,单元素 tuple 要多加一个逗号“,”,这样就避免了歧义:
,
Python在打印单元素tuple时,也自动添加了一个“,”,为了更明确地告诉你这是一个tuple。
多元素 tuple 加不加这个额外的“,”效果是一样的:
查看全部 -
新版本不用加u,也能prtint 中午字符串了
查看全部 -
如果中文字符串在Python环境下遇到 UnicodeDecodeError,这是因为.py文件保存的格式有问题。可以在第一行添加注释
# -*- coding: utf-8 -*-
目的是告诉Python解释器,用UTF-8编码读取源代码。然后用Notepad++ 另存为... 并选择UTF-8格式保存。
查看全部 -
对list中的某一个索引赋值,就可以直接用新的元素替换掉原来的元素,list包含的元素个数保持不变。
由于Bart还可以用 -1 做索引,因此,下面的代码也可以完成同样的替换工作:
查看全部 -
pop()方法总是删掉list的最后一个元素,并且它还返回这个元素,所以我们执行 L.pop() 后,会打印出 'Paul'。
要把Paul踢出list,我们就必须先定位Paul的位置。由于Paul的索引是2,因此,用
pop(2)
把Paul删掉:查看全部 -
append()总是把新的元素添加到 list 的尾部
方法是用list的
insert()
方法,它接受两个参数,第一个参数是索引号,第二个参数是待添加的新元素:查看全部 -
输出
for key in ['Adam','Lisa','Bart']:
print "%s:%d"%(key,d[key])
查看全部 -
如果中文字符遇到UnicodeDecodeError可在第一行添加注释
# -*- coding: utf-8 -*-
查看全部 -
1. L[0:3] ['Adam', 'Lisa', 'Bart']L[0:3]表示,从索引0开始取,直到索引3为止,但不包括索引3。即索引0,1,2,正好是3个元素。
2.也可以从索引1开始,取出2个元素出来:
>>> L[1:3] ['Lisa', 'Bart']
3.用一个 : ,表示从头到尾:
>>> L[:] ['Adam', 'Lisa', 'Bart', 'Paul']
4.切片操作还可以指定第三个参数
>>> L[::2],L[2;;3]是指取(0-101)中3的倍数,L【4:50:5】不大于50的5的倍数。 ['Adam', 'Bart']第三个参数表示每N个取一个,上面的 L[::2] 会每两个元素取出一个来,也就是隔一个取一个。
5.倒序切片
L = ['Adam', 'Lisa', 'Bart', 'Paul'] >>> L[-2:] ['Bart', 'Paul'] >>> L[:-2] ['Adam', 'Lisa'] >>> L[-3:-1] ['Lisa', 'Bart'] >>> L[-4:-1:2] ['Adam', 'Bart']
zi符串有个方法 upper() 可以把字符变成大写字母:>>> 'abc'.upper() 'ABC' def firstCharUpper(s): return s[0].upper()+s[1:] print firstCharUpper('hello') print firstCharUpper('sunday') print firstCharUpper('september') 运行结果: Hello Sunday September
查看全部
举报