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的值。

返回
顶部