Python的基本数据类型
整数
1
2
3
4
5
6
71,100,-8080,0,
```
> 十六进制整数 `0xff00,0xa5b4c3d2`
2. 浮点数
``` Python
1.23,3.14,-9.01 1.23e9 12.3e8 1.2e-5字符串
字符串是以单引号'
或双引号"
括起来的任意文本,比如'abc'
,"xyz"
- 字符串内部既包含
'
又包含"
可以用转义字符\
来标识'I\'m \"OK\"!'
- 转义字符\可以转义很多字符,比如
\n
表示换行,\t
表示制表符,字符\本身也要转义,所以\\
表示的字符就是\
- 字符串内部既包含
- 布尔值
布尔值只有True
、False
两种值(注意大小写) - 空值
空值是Python里一个特殊的值,用None
表示。None
不能理解为0,因为0是有意义的,而None
是一个特殊的空值。
Python的变量
变量名必须是大小写英文、数字和_
的组合,且不能用数字开头
在Python中,等号=
是赋值语句,可以把任意数据类型赋值给变量,同一个变量可以反复赋值,而且可以是不同类型的变量1
2
3
4a = 123 # a是整数
print(a)
a = 'ABC' # a变为字符串
print(a)
变量本身类型不固定的语言称之为动态语言,与之对应的是静态语言。
静态语言在定义变量时必须指定变量类型 (如 C 或 C++)
Python的常量
在Python中,通常用全部大写的变量名表示常量:1
PI = 3.14159265359 # PI是一个常量
Python的字符串编码
在Python 3版本中,字符串是以Unicode编码的,也就是说,Python的字符串支持多语言
对于单个字符的编码,Python提供了ord()
函数获取字符的整数表示,chr()
函数把编码转换为对应的字符:1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51 >> ord('A')
65
>> ord('中')
20013
>> chr(66)
'B'
>> chr(25991)
'文'
```
以Unicode表示的str通过`encode()`方法可以编码为指定的bytes,例如:
``` shell
>> '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)
```
反过来,如果我们从网络或磁盘上读取了字节流,那么读到的数据就是bytes。要把bytes变为str,就需要用`decode()`方法:
``` shell
>> b'ABC'.decode('ascii')
'ABC'
>> b'\xe4\xb8\xad\xe6\x96\x87'.decode('utf-8')
'中文'
```
要计算str包含多少个字符,可以用`len()`函数:
``` shell
>> len('ABC')
3
>> len('中文')
2
```
len()函数计算的是str的字符数,如果换成bytes,`len()`函数就计算字节数:
``` shell
>> len(b'ABC')
3
>> len(b'\xe4\xb8\xad\xe6\x96\x87')
6
>> len('中文'.encode('utf-8'))
6
```
格式化
在Python中,采用的格式化方式和C语言是一致的,用%实现,举例如下:
``` shell
>> 'Hello, %s' % 'world'
'Hello, world'
>> 'Hi, %s, you have $%d.' % ('Michael', 1000000)
'Hi, Michael, you have $1000000.'
%
运算符就是用来格式化字符串的。在字符串内部,%s
表示用字符串替换,%d
表示用整数替换
|占位符|替换内容|
|:-|-:|
|%d|整数|
|%f|浮点数|
|%s|字符串|
|%x|十六进制整数|
list和tuple
列表list
什么是list
list是一种有序的集合,可以随时添加和删除其中的元素1
2
3 >> classmates = ['Michael', 'Bob', 'Tracy']
>> classmates
['Michael', 'Bob', 'Tracy']
变量classmates就是一个list。用len()函数可以获得list元素的个数:(此例子中是3)
用索引来访问list中每一个位置的元素,记得索引是从0开始的
当索引超出了范围时,Python会报一个IndexError错误,所以,要确保索引不要越界1
2
3
4
5
6
7
8 >> classmates[0]
'Michael'
>> classmates[2]
'Tracy'
>> classmates[3]
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
IndexError: list index out of range
如果要取最后一个元素,除了计算索引位置外,还可以用-1做索引,直接获取最后一个元素
以此类推,可以获取倒数第2个、倒数第3个(-2 -3)
list的常见操作
list中追加元素到末尾
1
2
3>> classmates.append('Adam')
>> classmates
['Michael', 'Bob', 'Tracy', 'Adam']把元素插入到指定的位置
1
2
3>>> classmates.insert(1, 'Jack')
>>> classmates
['Michael', 'Jack', 'Bob', 'Tracy', 'Adam']要删除list末尾的元素
1
2
3
4>> classmates.pop()
'Adam'
>> classmates
['Michael', 'Jack', 'Bob', 'Tracy']删除指定位置的元素
1
2
3
4>> classmates.pop(1)
'Jack'
>> classmates
['Michael', 'Bob', 'Tracy']把某个元素替换成别的元素
1
2
3
4
5
6
7
8>> classmates[1] = 'Sarah'
>> classmates
['Michael', 'Sarah', 'Tracy']
```
## list的其他用法
1. list里面的元素的数据类型也可以不同:
``` shell
>> L = ['Apple', 123, True]list元素也可以是另一个list:
1
2
3
4
5
6
7
8
9>> s = ['Python', 'java', ['asp', 'php'], 'scheme']
>> len(s)
4
```
3. 如果一个list中一个元素也没有,就是一个空的list,它的长度为0:
``` shell
>> L = []
>> len(L)
0
元组tuple
tuple和list非常类似,但是tuple一旦初始化就不能修改1
>> classmates = ('Michael', 'Bob', 'Tracy')
现在,classmates这个tuple不能变了,它也没有append(),insert()这样的方法。其他获取元素的方法和list是一样的,你可以正常地使用classmates[0],classmates[-1],但不能赋值成另外的元素。
tuple不可变,所以代码更安全。如果可能,能用tuple代替list就尽量用tuple
- 如果要定义一个空的tuple,可以写成():
1
2
3 >> t = ()
>> t
()
- 只有1个元素的tuple定义时必须加一个逗号
,
,来消除歧义:1
2
3>> t = (1,)
>> t
(1,)
Python在显示只有1个元素的tuple时,也会加一个逗号,,以免被误解成数学计算意义上的括号