美文网首页
Python基础

Python基础

作者: holykitty | 来源:发表于2019-03-13 02:14 被阅读0次

数据类型与变量

字符串在内存中的表示(数字变量同)


字符串在内存中的表示.png

字符串和编码

1.获取字符整数
ord('A')

2.将编码转换成字符
chr(65)

3.ASCII、Unicode、UTF-8的关系
ASCII:只包含大小写英文字母、数字和一些符号,用1个字节。
Unicode:包含所有字符,且不可变长,因此需要的存储空间最大,最常用的是用两个字节表示一个字符(如果要用到非常偏僻的字符,就需要4个字节)。
UTF-8:可变长,把一个Unicode字符根据不同的数字大小编码成1-6个字节,常用的英文字母被编码成1个字节,汉字通常是3个字节,只有很生僻的字符才会被编码成4-6个字节。

4.字节bytes
Python对bytes类型的数据用带b前缀的单引号或双引号表示:
x = b'ABC'
要注意区分'ABC'和b'ABC',前者是str,后者虽然内容显示得和前者一样,但bytes的每个字符都只占用一个字节。

5.encode()使str编码为bytes

如果要在网络上传输,或者保存到磁盘上,就需要把str变为以字节为单位的bytes。

以Unicode表示的str通过encode()方法可以编码为指定的bytes

>>> 'ABC'.encode('ascii')
b'ABC'
>>> '中文'.encode('utf-8')
b'\xe4\xb8\xad\xe6\x96\x87'
>>> '中文'.encode('ascii')
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
UnicodeEncodeError: 'ascii' codec can't encode characters in position 0-1: ordinal not in range(128)

纯英文的str可以用ASCII编码为bytes,内容是一样的,含有中文的str可以用UTF-8编码为bytes。含有中文的str无法用ASCII编码,因为中文编码的范围超过了ASCII编码的范围,Python会报错。

6.decode()将bytes编码为str

反过来,如果我们从网络或磁盘上读取了字节流,那么读到的数据就是bytes。要把bytes变为str。

>>> b'ABC'.decode('ascii')
'ABC'
>>> b'\xe4\xb8\xad\xe6\x96\x87'.decode('utf-8')
'中文'

如果bytes中只有一小部分无效的字节,可以传入errors='ignore'忽略错误的字节:

>>> b'\xe4\xb8\xad\xff'.decode('utf-8', errors='ignore')
'中'

7.len()计算字符数或字节数

8.源码文件需要注明编码方式

#!/usr/bin/env python3
# -*- coding: utf-8 -*-

9.格式化

占位符 替换内容
%d 整数
%f 浮点数
%s 字符串
%x 十六进制整数

格式化整数和浮点数还可以指定是否补0和整数与小数的位数,用%%来表示一个%

>>> 'Hello, %s' % 'world'
'Hello, world'
>>> 'Hi, %s, you have $%d.' % ('Michael', 1000000)
'Hi, Michael, you have $1000000.'
>>> print('%2d-%02d' % (3, 1))
 3-01
>>> print('%.2f' % 3.1415926)
3.14
>>>print("成绩提升%.1f%%" % 1.7333)
成绩提升1.7%

使用list和tuple#

1.list添加、删除元素
list.append('a') # 添加到最后一位
list.insert(1,'a') # 添加到索引号为1的位置
list.pop() # 删除最后一位
list.pop(1) # 删除索引号为1的位置的元素

2.空列表长度为0

3.tuple一旦初始化就不能修改

4.定义一个只有1个元素的tuple
tupleTest =(1,)

5.各种数据类型的存储变化

各种数据类型的存储变化.png

循环

break结束循环
continue结束当前次循环,直接进入下一轮循环

dict和set

1.dict判断key是否存在的方法in,get()

>>> d = {'Michael': 95, 'Bob': 75, 'Tracy': 85}
>>> 'Thomas' in d
False
# get() 如果key不存在,可以返回None,或者自己指定的value
>>> d.get('Thomas') # 返回None的时候Python的交互环境不显示结果
>>> d.get('Thomas', -1)
-1

2.dict和list的比较
dict
1.查找和插入的速度极快,不会随着key的增加而变慢;
2.需要占用大量的内存,内存浪费多。
list
1.查找和插入的时间随着元素的增加而增加;
2.占用空间小,浪费内存很少。
dict是用空间来换取时间的一种方法。
dict可以用在需要高速查找的很多地方,在Python代码中几乎无处不在,正确使用dict非常重要,需要牢记的第一条就是dict的key必须是不可变对象。

相关文章

网友评论

      本文标题:Python基础

      本文链接:https://www.haomeiwen.com/subject/pqhapqtx.html