Python中整数和浮点数
Python支持对整数和浮点数直接进行四则混合运算,运算规则和数学上的四则运算规则完全一致。
使用括号可以提升优先级,这和数学运算完全一致,注意只能使用小括号,但是括号可以嵌套很多层。
和数学运算不同的地方是,Python的证书运算结果任然是正式,浮点数运算结果仍然是浮点数:
1 + 2 = 3 # ==> 整数 3
1.0 + 2.0 - 3.0 # ==> 浮点数数 3.0
但是整数和浮点数混合匀速三的结果就变成浮点数了: 1 + 2.0 = 3.0
Python的整数除法,即使除不尽,结果仍然是整数,余数直接被扔掉。不过,Python提供了一个秋雨的运算%可以计算余数: 11 % 4 # ==> 3
如果我们要计算11 / 4 的精确结果,按照“整数和浮点数混合运算的结果是浮点数”的法则,把两个数中的一个变成浮点数在运算就没问题了:11.0 / 4 # ==> 2.75
Python 中布尔类型
布尔类型只有True和False两种值,但是布尔类型有以下几种运算:
与运算:只有两个布尔值都为True时,计算结果才为True。
或运算:只要有一个布尔值为True,计算结果就是True.
非运算:把True变为False,或把False变为True。(布尔运算在计算机中用来做条件判断,根据计算结果为True或False,计算机可以自动执行不同的后续代码)
Python把 0 、空字符串 ‘’、和None看成是False,其他数值和非空字符串都看成是True。
短路计算:
1、在计算 a and b 时,如果 a 是False,则根据与运算法则,整个结果必定为 Flase,因此返回a;如果 a 是True,则整个计算结果必定取决于b,因此返回b
2、在计算 a or b 时,如果 a 是True,则根据或运算法则,整个计算结果必定为True,因此返回a;如果a是False,则整个计算结果必定取决于b,因此返回b。
所以,Python解释器在做布尔运算时,只要能提前确定计算结果,它就不会往后算了,直接返回结果。
Python创建list
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。
Python按照索引访问list
由于list是一个有序集合,所以,我们可以用一个list按分数从高到底表示出办理的3个同学:
L = ['Adam', 'Lisa', 'Bart’]
若想拿到第 i 个同学的名字就需要这样写:L[i]
Python之倒序访问list
在一个list中我们若想得到最后一名同学的名字,可以用-1这个索引来表示最后一个元素。相应的,其他的一次类推。
Python之添加新元素
将一个新的元素添加到现有的list当中去
第一个方法,就是用list的 append() 方法,把新的元素追加到list的末尾;(append() 方法,总是把新的元素添加到list的尾部)
第二个方法,是 insert() 方法,它接受两个参数,第一个参数是索引号,第二个参数是待添加的新元素;
L = ['Adam', 'Lisa', 'Bart']
L.insert(0, 'Paul')
print L
['Paul', 'Adam', 'Lisa', 'Bart']
Python从list删除元素
如果我们想要删除list中的最后一个元素,我们可以使用pop() 方法删除:
L = ['Adam', 'Lisa', 'Bart', 'Paul']
L.pop()
'Paul'
print L
['Adam', 'Lisa', 'Bart']
pop() 方法总是删掉list的最后一个元素,并且它还返回这个元素,所以我们执行pop() 方法后,会打印出最后一个元素。
pop(i) 表示把list中 索引为 i 的元素删除。
Python中替换元素
对list中的某一个索引赋值,就可以直接用新的元素替换掉原来的元素,list包含的元素个数保持不变。
Python之创建tuple
tuple 是另一种有序的列表,中文翻译为“元组”。tuple和list非常类似。但是,tuple一旦创建完毕,就不能修改了。
创建tuple和创建list唯一不同之处是用 () 替代了 []
tuple 没有 append() 方法,也没有 insert() 方法。
获取tuple元素的方式和list是一模一样的,可以使用索引访问元素,但是不能赋值成别的元素。
Python之创建单元素tuple
tuple和list一样,可以包含 0 个、1 个和任意多个元素。
包含 0 个元素的tuple,也就是空tuple,直接用 () 表示。
() 既可以表示tuple,又可以作为括号表示运算时的优先级,结果(1)被Python解释器计算出结果 1 ,导致我们得到的不是tuple,而是整数 1 。
正式因为用() 定义单元素的tuple有歧义,所以Python规定,单元素tuple要多加一个逗号“,”,这样就避免了歧义:
t = (1,)
print t
(1,)
Python在打印单元素tuple时,也自动添加了一个“,”,为了更明确的告诉你这个一个tuple.
Python之“可变”的tuple
t = ('a', 'b', ['A', 'B'])
注意到 t 有 3 个元素:'a','b'和一个list:['A', 'B']。list作为一个整体是tuple的第3个元素。list对象可以通过 t[2] 拿到:
L = t[2]
然后,我们把list的两个元素改一改:
L[0] = 'X'
L[1] = 'Y'
再看看tuple的内容:
print t
('a', 'b', ['X', 'Y'])
不是说tuple一旦定义后就不可变了吗?怎么现在又变了?
别急,我们先看看定义的时候tuple包含的3个元素:
当我们把list的元素'A'和'B'修改为'X'和'Y'后,tuple变为:
表面上看,tuple的元素确实变了,但其实变的不是 tuple 的元素,而是list的元素。
tuple一开始指向的list并没有改成别的list,所以,tuple所谓的“不变”是说,tuple的每个元素,指向永远不变。即指向'a',就不能改成指向'b',指向一个list,就不能改成指向其他对象,但指向的这个list本身是可变的!
理解了“指向不变”后,要创建一个内容也不变的tuple怎么做?那就必须保证tuple的每一个元素本身也不能变。
Python之if语句
age = 20
if age >= 18:
print 'your age is', age
print 'adult'
print 'END'
注意: Python代码的缩进规则。具有相同缩进的代码被视为代码块,上面的3,4行 print 语句就构成一个代码块(但不包括第5行的print)。如果 if 语句判断为 True,就会执行这个代码块。
缩进请严格按照Python的习惯写法:4个空格、不要使用tab、更不要混合tab和空格,否则很容易造成索引引起的语法错误。
注意:
If语句后接表达式,然后用 : 表示代码块开始。
如果你在Python交互环境下敲代码,还要特别留意缩进,并且推出缩进需要多敲一行回车:
age = 20
if age >= 18:
... print 'your age is', age
... print 'adult'
...
your age is 20
print t
(1,)
Python在打印单元素tuple时,也自动添加了一个“,”,为了更明确的告诉你这个一个tuple.
#Python之“可变”的tuple
>>> t = ('a', 'b', ['A', 'B'])
注意到 t 有 3 个元素:'a','b'和一个list:['A', 'B']。list作为一个整体是tuple的第3个元素。list对象可以通过 t[2] 拿到:
>>> L = t[2]
然后,我们把list的两个元素改一改:
>>> L[0] = 'X'
>>> L[1] = 'Y'
再看看tuple的内容:
>>> print t
('a', 'b', ['X', 'Y'])
不是说tuple一旦定义后就不可变了吗?怎么现在又变了?
别急,我们先看看定义的时候tuple包含的3个元素:
当我们把list的元素'A'和'B'修改为'X'和'Y'后,tuple变为:
表面上看,tuple的元素确实变了,但其实变的不是 tuple 的元素,而是list的元素。
tuple一开始指向的list并没有改成别的list,所以,tuple所谓的“不变”是说,tuple的每个元素,指向永远不变。即指向'a',就不能改成指向'b',指向一个list,就不能改成指向其他对象,但指向的这个list本身是可变的!
理解了“指向不变”后,要创建一个内容也不变的tuple怎么做?那就必须保证tuple的每一个元素本身也不能变。
#Python之if语句
>age = 20
if age >= 18:
print 'your age is', age
print 'adult'
print 'END'
注意: Python代码的缩进规则。具有相同缩进的代码被视为代码块,上面的3,4行 print 语句就构成一个代码块(但不包括第5行的print)。如果 if 语句判断为 True,就会执行这个代码块。
缩进请严格按照Python的习惯写法:4个空格、不要使用tab、更不要混合tab和空格,否则很容易造成索引引起的语法错误。
注意:
If语句后接表达式,然后用 : 表示代码块开始。
如果你在Python交互环境下敲代码,还要特别留意缩进,并且推出缩进需要多敲一行回车:
>>> age = 20
>>> if age >= 18:
... print 'your age is', age
... print 'adult'
...
your age is 20
adult
Python之 if-else
当if语句判断表达式的结果为True时,就会执行if 包含的代码块。
if ... else …
if age >= 18:
print 'adult'
else:
print ‘teenager'
利用if … else ...语句,我么可以根据条件表达式的值为True或False,分别执行if代码或或者else代码块。
Python之 if-elif-else
elif 意思就是else if。
特别注意:
这一系列条件判断会从上到下依次判断,如果某个判断为True,执行完对应的代码块,后面的条件判断就直接忽略,不再执行了。
Python之 for循环
Python 的for循环可以依次把list或tuple的每个元素迭代出来:
L = ['Adam', 'Lisa', 'Bart']
for name in L:
print name
注意:name 这个变量是在for循环中定义的,意思是,依次取出list中的每一个元素,并把元素赋值给name,然后执行for循环体(就是缩进的代码块)。
Python之 while循环
和for循环不同的另一种循环是while循环,while循环不会迭代list或tuple的元素,而是根据表达式判断循环是否结束。
N = 10
x = 0
while x < N:
print x
x = x + 1
while 循环每次先判断 x < N ,如果为True,则执行循环体的代码块,否则,退出循环。
在循环体内,x = x + 1 会让x 不断增加,最终应为x < N不成立而退出循环。
如果没有这一个语句,while 循环在判断x < N时总是为True,就会无限循环下去,变成死循环,所以要特别留意while循环的退出条件。
Python之 break退出循环
用for循环或者while循环时,如果要在循环体内直接退出循环,可以使用break语句:
sum = 0
x = 1
while True:
sum = sum + x
x = x + 1
if x > 100:
break
print sum
Python之 continue继续循环
在循环过程中,可以用break退出当前循环,还可以用continue跳过后续循环代码,继续下一次循环。
假设我们已经写好了利用for循环计算平均分的代码:
L = [75, 98, 59, 81, 66, 43, 69, 85]
sum = 0.0
n = 0
for x in L:
sum = sum + x
n = n + 1
print sum / n
现在老师只想统计及格分数的平均分,就要把 x < 60 的分数剔除掉,这时,利用 continue,可以做到当 x < 60的时候,不继续执行循环体的后续代码,直接进入下一次循环:
for x in L:
if x < 60:
continue
sum = sum + x
n = n + 1
Python之 多重循环
在循环内部,还可以嵌套循环,我们来看一个例子:
for x in ['A', 'B', 'C']:
for y in ['1', '2', '3']:
print x + y
x 每循环一次,y 就会循环 3 次,这样,我们可以打印出一个全排列:
A1
A2
A3
B1
B2
B3
C1
C2
C3
Python之什么是dict
用 dict 表示“名字”-“成绩”的查找表如下:
d = {
'Adam': 95,
'Lisa': 85,
'Bart': 59
}
我们把名字称为key,对应的成绩称为value,dict就是通过 key 来查找 value。
花括号{}表示这是一个dict,然后按照key : value,写出来即可。最后一个key : value的逗号可以省略。
由于dict也是集合,len()函数可以计算任意集合的大小:
len(d)
3
Python之访问dict
dict中,可以简单的使用d[key]的形式来查找对应的value,这个和list很像,不同之处是,list必须使用索引返回对应的元素,而dict使用key
注意:通过key访问dict的value,只要key存在,dict就返回对应的value。如果key不存在,会直接报错:keyError
要避免keyError发生,有两个方法:
一、先判断一下key是否存在,用in操作符:
if 'Paul' in d:
print d['Paul']
二、使用dict本身提供的一个get方法,在key不存在的时候,返回None:
print d.get('Bart')
59
print d.get('Paul')
None
Python中dict的特点
1、查找速度快。无论dict有10个元素还是10万个元素,查找速度都一样。而list的查找速度随着元素增加而逐渐下降。
Dict相对应的缺点是 占用内存大,还会浪费很多内容。list正好相反,占用内存小,但是查找速度慢。
由于dict是按key查找,所以,在一个dict钟,key不能重复。
2、存储的key-value序对是没有顺序的。
3、作为key的元素必须不可变。Python的基本类型如字符串、整数、浮点数都是不可变的。都可以作为key。
不可变的这个限制金作用于key,value是否可变无所谓。
Python更新dict
要把新同学'Paul'的成绩 72 加进去,用赋值语句:
d['Paul'] = 72
Python之 遍历dict
由于dict也是一个集合,所以,遍历dict和遍历list类似,都可以通过 for 循环实现。
直接使用for循环可以遍历 dict 的 key:
d = { 'Adam': 95, 'Lisa': 85, 'Bart': 59 }
for key in d:
... print key
...
Lisa
Adam
Bart
由于通过 key 可以获取对应的 value,因此,在循环体内,可以获取到value的值。