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

1 PythonUnicode字符串

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 PythonUnicode编码的支持

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

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

print u'中文'

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

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

print (u'中文\n日文\n韩文')

输出:

中文

日文

韩文

例一:

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


输出:

静夜思

床前明月光,

疑是地上霜。

举头望明月,

低头思故乡。

2 Python中整数和浮点数

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

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支持布尔类型的数据,布尔类型只有TrueFalse两种值,但是布尔类型有以下几种运算:

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中,布尔类型还可以与其他数据类型做 andornot运算,例如:

a = True

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

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

true and x;结果返回x,若xtruex 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 Pythonlist

4.1 创建list

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

比如,列出班里所有同学的名字,就可以用一个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 "", line 1, in

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 
    print (L[-4])
IndexError: list index out of range
[95.5, 85, 59]
59
85
95.5

所以使用倒序索引时,也要注意不要越界。


你可能感兴趣的:(Python)