Python的基本数据类型

  1. 整数

    1
    2
    3
    4
    5
    6
    7
       1100-80800
    ```
    > 十六进制整数 `0xff000xa5b4c3d2`

    2. 浮点数
    ``` Python
    1.233.14-9.01 1.23e9 12.3e8 1.2e-5
  2. 字符串
    字符串是以单引号'或双引号"括起来的任意文本,比如'abc'"xyz"

    • 字符串内部既包含'又包含"可以用转义字符\来标识
      'I\'m \"OK\"!'
    • 转义字符\可以转义很多字符,比如\n表示换行,\t表示制表符,字符\本身也要转义,所以\\表示的字符就是\
  3. 布尔值
    布尔值只有TrueFalse两种值(注意大小写)
  4. 空值
    空值是Python里一个特殊的值,用None表示。None不能理解为0,因为0是有意义的,而None是一个特殊的空值。

Python的变量

变量名必须是大小写英文、数字和_的组合,且不能用数字开头
在Python中,等号=是赋值语句,可以把任意数据类型赋值给变量,同一个变量可以反复赋值,而且可以是不同类型的变量

1
2
3
4
a = 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的常见操作

  1. list中追加元素到末尾

    1
    2
    3
    >>> classmates.append('Adam')
    >>> classmates
    ['Michael', 'Bob', 'Tracy', 'Adam']
  2. 把元素插入到指定的位置

    1
    2
    3
    >>> classmates.insert(1, 'Jack')
    >>> classmates
    ['Michael', 'Jack', 'Bob', 'Tracy', 'Adam']
  3. 要删除list末尾的元素

    1
    2
    3
    4
    >>> classmates.pop()
    'Adam'
    >>> classmates
    ['Michael', 'Jack', 'Bob', 'Tracy']
  4. 删除指定位置的元素

    1
    2
    3
    4
    >>> classmates.pop(1)
    'Jack'
    >>> classmates
    ['Michael', 'Bob', 'Tracy']
  5. 把某个元素替换成别的元素

    1
    2
    3
    4
    5
    6
    7
    8
    >>> classmates[1] = 'Sarah'
    >>> classmates
    ['Michael', 'Sarah', 'Tracy']
    ```
    ### list的其他用法
    1. list里面的元素的数据类型也可以不同:
    ``` shell
    >>> L = ['Apple', 123, True]
  6. 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时,也会加一个逗号,,以免被误解成数学计算意义上的括号