您的位置:首页 > 编程语言 > Python开发

Python基础3Unicode编码+整数浮点数+布尔类型+list列表集合

2016-11-11 02:03 585 查看
1 Python中Unicode字符串

1.1 ASCII编码

因为计算机只能处理数字,如果要处理文本,就必须先把文本转换为数字才能处理。最早的计算机在设计时采用8个比特(bit)作为一个字节(byte),所以,一个字节能表示的最大的整数就是255(二进制11111111=十进制255),0
- 255被用来表示大小写英文字母、数字和一些符号,这个编码表被称为ASCII编码,比如大写字母
A 的编码是65,小写字母
z 的编码是122。

1.2 Unicode编码来源

对于ASCII编码,如果要表示中文,显然一个字节是不够的,至少需要两个字节,而且还不能和ASCII编码冲突,所以,中国制定了GB2312编码,用来把中文编进去。

类似的,日文和韩文等其他语言也有这个问题。为了统一所有文字的编码,Unicode应运而生。Unicode把所有语言都统一到一套编码里,这样就不会再有乱码问题了。

Unicode通常用两个字节(16比特)表示一个字符,原有的英文编码从单字节变成双字节,只需要把高字节全部填为0就可以。

1.3 Python对Unicode编码的支持

因为Python的诞生比Unicode标准发布的时间还要早,所以最早的Python只支持ASCII编码,普通的字符串'ABC'在Python内部都是ASCII编码的,其中utf-8是unicode编码方式的一种实现方式。

Python在后来添加了对Unicode的支持,以Unicode表示的字符串用u'...'表示,比如输出:中文

print u'中文'

注意: 不加
u ,中文就不能正常显示。


Unicode字符串除了多了一个 u
之外,与普通字符串没啥区别,转义字符和多行表示法仍然有效:

print (u'中文\n日文\n韩文')
输出:

中文

日文

韩文

例一:

print (r'''静夜思
床前明月光,
疑是地上霜。
举头望明月,
低头思故乡。''')


输出:

静夜思

床前明月光,

疑是地上霜。

举头望明月,

低头思故乡。

2 Python中整数和浮点数

1)Python支持对整数和浮点数直接进行四则混合运算,运算规则和数学上的四则运算规则完全一致

print (7.5 / 8 + 2.1)#3.0375

2)使用括号可以提升优先级,这和数学运算完全一致,注意只能使用小括号,但是括号可以嵌套很多层

3)和数学运算不同的地方是,Python的整数运算结果仍然是整数,浮点数运算结果仍然是浮点数

Python2版本中Python的整数除法,即使除不尽,结果仍然是整数,余数直接被扔掉。比如11 / 4    #
==> 2 需要在11后面加上.0使其变成浮点数,但是Python3很好解决了这个问题print
(11 / 4)==> 2.75

3 Python的布尔类型

我们已经了解了Python支持布尔类型的数据,布尔类型只有True和False两种值,但是布尔类型有以下几种运算:

1)与运算:只有两个布尔值都为 True
时,计算结果才为 True。

True and True   # ==> True

True and False   # ==> False

False and True   # ==> False

False and False   # ==> False

2)或运算:只要有一个布尔值为 True,计算结果就是
True。

True or True   # ==> True

True or False   # ==> True

False or True   # ==> True

False or False   # ==> False

3)非运算:把True变为False,或者把False变为True:

not True   # ==> False

not False   # ==> True

布尔运算在计算机中用来做条件判断,根据计算结果为True或者False,计算机可以自动执行不同的后续代码。

在Python中,布尔类型还可以与其他数据类型做
and、or和not运算,例如:

a = True

print (a and 'a=T' or 'a=F')

因为Python把0、空字符串''和None看成
False,其他数值和非空字符串都看成
True。


true and x;结果返回x,若x为true,x
and y返回x。

4)短路运算:

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解释器在做布尔运算时,只要能提前确定计算结果,它就不会往后算了,直接返回结果。

例如:

#-*- coding:utf-8 -*-
a = 'python'    #true
print ('hello,', a or 'world')#a为true,不再向后计算
b = ''  #false
print ('hello,', b or 'world')#b为false,返回给'world'

4 Python之list

4.1 创建list

Python内置的一种数据类型是列表:list。list是一种有序的集合,可以随时添加和删除其中的元素。

比如,列出班里所有同学的名字,就可以用一个list表示:

['Michael', 'Bob', 'Tracy']

['Michael', 'Bob', 'Tracy']

list是数学意义上的有序集合,也就是说,list中的元素是按照顺序排列的。

构造list非常简单,按照上面的代码,直接用
[ ] 把list的所有元素都括起来,就是一个list对象。通常,我们会把list赋值给一个变量,这样,就可以通过变量来引用list:

#-*- coding:utf-8 -*-
a = ['dadaad','dadasdsa',123,'中国']
print (a)#['dadaad', 'dadasdsa', 123, '中国']

4.2 Python按照索引访问list

由于list是一个有序集合,所以,我们可以用一个list按分数从高到低表示出班里的3个同学,那我们如何从list中获取指定第
N 名的同学呢?方法是通过索引来获取list中的指定元素。

需要特别注意的是,索引从 0
开始,也就是说,第一个元素的索引是0,第二个元素的索引是1,以此类推。因此,要打印第一名同学的名字,用
L[0]:

#-*- coding:utf-8 -*-
L = ['adam', 95.5, 'lisa', 85, 'bart', 59]
print (L)#['adam', 95.5, 'lisa', 85, 'bart', 59]
print (L[0])#adam
print (L[1])#95.5

当超出索引范围时会报错:print (L[6])

IndexError: list index out of range

4.3 Python之倒序访问list

我们还是用一个list按分数从高到低表示出班里的3个同学:

L = ['Adam', 'Lisa', 'Bart']

这时,老师说,请分数最低的同学站出来。

要写代码完成这个任务,我们可以先数一数这个 list,发现它包含3个元素,因此,最后一个元素的索引是2:

print (L[2])

Bart

有没有更简单的方法?

有!

Bart同学是最后一名,俗称倒数第一,所以,我们可以用 -1
这个索引来表示最后一个元素:

print (L[-1])

Bart

Bart同学表示躺枪。

类似的,倒数第二用 -2
表示,倒数第三用 -3 表示,倒数第四用
-4 表示:

print (L[-2])

Lisa

 print (L[-3])

Adam

 print (L[-4])

Traceback (most recent call last):

File "<stdin>", line 1, in <module>

IndexError: list index out of range

L[-4] 报错了,因为倒数第四不存在,一共只有3个元素。

例如:

#-*- coding:utf-8 -*-
L = L = [95.5, 85, 59]
print (L)
print (L[-1])
print (L[-2])
print (L[-3])
print (L[-4])
结果print (L[-4])打印错误
Traceback (most recent call last):
File "D:\Java\workspace\Testpython\hello.py", line 7, in <module>
print (L[-4])
IndexError: list index out of range
[95.5, 85, 59]
59
85
95.5

所以使用倒序索引时,也要注意不要越界。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: