Python基础(二)
一.字符串和编码
(一)ASCII Unicode
ASCII 一个字节,占8位,只能存256个
Unicode 最少2个字节 统一编码,万国码
utf -32 = 4字节
utf -16 = 2字节
utf -8 = 1字节 = 8bits 可变长编码 最少3个中文字节
gbk 两个中文字节
二进制位=bit=8bits
(英文1个字节,所有的中文3个字节,欧洲2个字节)
(一个二进制位是计算机里的最小表示单元,1个字节是计算机里的最小存储单元)
(二)字符串
最新的python3中,字符串是以Unicode编码的。
ord()函数获取字符的整数表示,chr()函数把编码转换为对应的字符
计算 str 包含多少个字符,可以用len()函数
>>> ord('A') 65 >>> ord('中') 20013 >>> chr(66) 'B' >>> chr(25991) '文'
>>> len('ABC')
3
>>> len('中文')
2
ps:纯英文的str可以用ASCII编码为bytes,含有中文的str可以用UTF-8编码为bytes.含有中文的str无法用ASCII编码。
(单引号和双引号没有任何区别,只适用于单行,三个单或双引号,适用于多行字符串,或多行注释)
从网上读取了字节流
>>> b'ABC'.decode('ascii')
'ABC'
>>> b'xe4xb8xadxe6x96x87'.decode('utf-8')
'中文'
格式化 %
>>> 'Hello, %s' % 'world' 'Hello, world' >>> 'Hi, %s, you have $%d.' % ('Michael', 1000000) 'Hi, Michael, you have $1000000.'
常用占位符:
%d 整数
%f 浮点数
%s 字符串
%x 十六进制整数
二.list和tuple
(一)字符串和list
字符串
classmates = "mike,jack,rose,lucy"
list
classmates = ["mike","jack","rose","lucy"]
这里切片切的每个索引出的元素是mike
列表list
len(s)
print (len(s))
左---右从0开始
右---左从-1开始
list为一个可变,有序的表
名字.count("aa") 统计次数
名字.append(添加的内容)
名字.insert(位置,数据)
名字.pop()
删除最后一个元素
名字.pop(位置)
名字[位置]=新换的数据 a[1]="bbbb"
list中的元素也可以是另一个元素
list中的排序 list.sort() 一般按字母的字典排序,数字的大小排序
增删改查可用于列表,字符串不行。
切片都可以
print(a.index("h")) 索引
print(a[-1])
print(a[0:4])
print(a[-6:]) 顾头不顾尾
print(a[0::2]) 隔一个切一个 步长
for和enumerate区别
第一种,稍微看起来比较累赘
range(start, top, step)
start 代表在哪个索引号开始
stop 代表在哪个索引号结束
没有start则默认从0开始
如下面的例子:
默认从0开始
srr = [4,5,6,7] for i in range(len(arr)): print (i, arr[i])i代表索引号
输出结果:
(0, 4)
(1, 5)
(2, 6)
(3, 7)
str='i love you' for i in range(len(str)): print i输出结果:
0
1
2
3
4
5
6
7
8
9
第二种方法:enumerate()
下面的i不再代表索引号,而是索引号和值的组合,你可以看成整体,看运行结果
str='i love you' for i in enumerate(str): print i
运行结果:
(0, 'i')
(1, ' ')
(2, 'l')
(3, 'o')
(4, 'v')
(5, 'e')
(6, ' ')
(7, 'y')
(8, 'o')
(9, 'u')
注意:空格它也会遍历上
下面是另一种:index代表索引号,item代表索引号对应的值
arr1=[4,5,6,7,8] for index, item in enumerate(arr1): print index, item
输出结果:
0 41 5
2 6
3 7
4 8