数字类型

Python 中有两种常见数字类型,整型(int)和浮点型(float),整型数之间运算结果为整型,整型与浮点型之间运算结果为浮点型。除法永远返回浮点型。

一般计算:

>>> 2 + 2
4
>>> 50 - 5 * 6
20
>>> (50 - 5 * 6) / 4
5.0
1
2
3
4
5
6

除法:

>>> 8 / 5
1.6
>>> 17 // 3  # 取商
5
>>> 17 % 3  # 取余
2
1
2
3
4
5
6

阶乘:

>>> 5 ** 2
25
>>> 2 ** 7
128
1
2
3
4

字符串

字符串可以通过单引号(')或者双引号(")来表示,反斜线(\)来转译字符。字符串是常量,即不可改。

>>> 'spam eggs'  # 单引号
'spam eggs'
>>> 'doesn\'t'  # 转译字符
"doesn't"
>>> "doesn't"  # 双引号
"doesn't"
>>> '"Yes," they said.'
'"Yes," they said.'
>>> "\"Yes,\" they said."
'"Yes," they said.'
>>> '"Isn\'t," they said.'
'"Isn\'t," they said.'
1
2
3
4
5
6
7
8
9
10
11
12

通常情况下,反斜线会被作为转译字符使用,如果我们要强制将其作为一般字符时,需要在字符串前面加一个 r 标记,表示这个字符串使用原始字符。

>>> print('C:\some\name')  # 这里 \n 表示换行
C:\some
ame
>>> print(r'C:\some\name')  # 注意单引号前面的 r
C:\some\name
1
2
3
4
5

我们可以通过 """..."""'''...''' 来表示多行字符串,在多行字符串中每一行末尾的换行符会被保留。如果我们想去除某一行默认的换行符,可以在行末加一个反斜线。

下面的例子会省略初始的一个空行。

print("""\
Usage: thingy [OPTIONS]
     -h                        Display this usage message
     -H hostname               Hostname to connect to
""")
1
2
3
4
5

通过数字和乘机符号,我们可以对字符串进行重复。

>>> 3 * 'un' + 'ium'
'unununium'
1
2

两个相邻的字符串字面量可以直接拼接成一个新的字符串,但是字符串字面量和变量之间不行。

>>> 'Py' 'thon'
'Python'
1
2

字符串支持索引,索引规则如下:

 +---+---+---+---+---+---+
 | P | y | t | h | o | n |
 +---+---+---+---+---+---+
 0   1   2   3   4   5   6
-6  -5  -4  -3  -2  -1
1
2
3
4
5

列表

列表可以用来保存一组数据,这些数据可以是同一种类型,也可以不同类型。列表支持索引,列表内的值可改。

>>> squares = [1, 4, 9, 16, 25]
>>> squares
[1, 4, 9, 16, 25]
>>> squares[0]  # 索引访问
1
>>> squares[-1]
25
>>> squares[-3:]  # 返回新的列表
[9, 16, 25]
1
2
3
4
5
6
7
8
9

通过 + 连接两个列表,可以返回一个新的列表:

>>> squares + [36, 49, 64, 81, 100]
[1, 4, 9, 16, 25, 36, 49, 64, 81, 100]
1
2

我们可以通过索引对列表进行操作:

>>> letters = ['a', 'b', 'c', 'd', 'e', 'f', 'g']
>>> letters
['a', 'b', 'c', 'd', 'e', 'f', 'g']
>>> # 替换一些值
>>> letters[2:5] = ['C', 'D', 'E']
>>> letters
['a', 'b', 'C', 'D', 'E', 'f', 'g']
>>> # 删除一些值
>>> letters[2:5] = []
>>> letters
['a', 'b', 'f', 'g']
>>> # 清空列表
>>> letters[:] = []
>>> letters
[]
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15

列表还支持简写方式:

squares = [x**2 for x in range(10)]
1

等效于:

>>> squares = []
>>> for x in range(10):
...     squares.append(x**2)
...
>>> squares
[0, 1, 4, 9, 16, 25, 36, 49, 64, 81]
1
2
3
4
5
6

更复杂一点的例子:

>>> [(x, y) for x in [1,2,3] for y in [3,1,4] if x != y]
[(1, 3), (1, 4), (2, 3), (2, 1), (2, 4), (3, 1), (3, 4)]
1
2

元组

元组(tuple)是由一组逗号分割的值组成的。元组内的值不能修改。

>>> t = 12345, 54321, 'hello!'
>>> t[0]
12345
>>> t
(12345, 54321, 'hello!')
>>> v = ([1, 2, 3], [3, 2, 1])
>>> v
([1, 2, 3], [3, 2, 1])
1
2
3
4
5
6
7
8

通过如下方式可以对元组进行解构:

>>> x, y, z = t
1

集合

集合(set)中保存的是一组无序但唯一的值。注意,空集合需要使用 set(),因为 {} 表示一个空字典(dict)。

>>> basket = {'apple', 'orange', 'apple', 'pear', 'orange', 'banana'}
>>> print(basket)   # 重复项已经被删除
{'orange', 'banana', 'pear', 'apple'}
1
2
3

集合运算:

>>> a = set('abracadabra')
>>> b = set('alacazam')
>>> a
{'a', 'r', 'b', 'c', 'd'}
>>> a - b  # 在 a 中但是不在 b 中的字母
{'r', 'd', 'b'}
>>> a | b  # 在 a 中活在 b 中的字母
{'a', 'c', 'r', 'd', 'b', 'm', 'z', 'l'}
>>> a & b  # 即在 a 中又在 b 中的字母
{'a', 'c'}
>>> a ^ b  # 在 a 或者 b 中,但又不同时在 a 和 b 中
{'r', 'd', 'b', 'm', 'z', 'l'}
1
2
3
4
5
6
7
8
9
10
11
12

与列表相似,集合也支持简写方式:

>>> a = {x for x in 'abracadabra' if x not in 'abc'}
>>> a
{'r', 'd'}
1
2
3

字典

字典用于存储一组键值对。key 可以是任何不可变的数据。

>>> tel = {'jack': 4098, 'sape': 4139}
>>> tel['guido'] = 4127
>>> tel
{'jack': 4098, 'sape': 4139, 'guido': 4127}
>>> tel['jack']
4098
>>> tel['irv'] = 4127
>>> tel
{'jack': 4098, 'guido': 4127, 'irv': 4127}
1
2
3
4
5
6
7
8
9

可以通过 dict() 构造函数来创建字典:

>>> dict([('sape', 4139), ('guido', 4127), ('jack', 4098)])
{'sape': 4139, 'guido': 4127, 'jack': 4098}
>>> dict(sape=4139, guido=4127, jack=4098)
{'sape': 4139, 'guido': 4127, 'jack': 4098}
1
2
3
4

字典也支持简写形式:

>>> {x: x**2 for x in (2, 4, 6)}
{2: 4, 4: 16, 6: 36}
1
2

关注微信公众号,获取最新推送~

加微信,深入交流~