数字类型
Python 中有两种常见数字类型,整型(int)和浮点型(float),整型数之间运算结果为整型,整型与浮点型之间运算结果为浮点型。除法永远返回浮点型。
一般计算:
>>> 2 + 2
4
>>> 50 - 5 * 6
20
>>> (50 - 5 * 6) / 4
5.0
1
2
3
4
5
6
2
3
4
5
6
除法:
>>> 8 / 5
1.6
>>> 17 // 3 # 取商
5
>>> 17 % 3 # 取余
2
1
2
3
4
5
6
2
3
4
5
6
阶乘:
>>> 5 ** 2
25
>>> 2 ** 7
128
1
2
3
4
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
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
2
3
4
5
我们可以通过 """..."""
和 '''...'''
来表示多行字符串,在多行字符串中每一行末尾的换行符会被保留。如果我们想去除某一行默认的换行符,可以在行末加一个反斜线。
下面的例子会省略初始的一个空行。
print("""\
Usage: thingy [OPTIONS]
-h Display this usage message
-H hostname Hostname to connect to
""")
1
2
3
4
5
2
3
4
5
通过数字和乘机符号,我们可以对字符串进行重复。
>>> 3 * 'un' + 'ium'
'unununium'
1
2
2
两个相邻的字符串字面量可以直接拼接成一个新的字符串,但是字符串字面量和变量之间不行。
>>> 'Py' 'thon'
'Python'
1
2
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
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
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
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
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
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
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
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
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
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
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
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
2
3
4
字典也支持简写形式:
>>> {x: x**2 for x in (2, 4, 6)}
{2: 4, 4: 16, 6: 36}
1
2
2
关注微信公众号,获取最新推送~
加微信,深入交流~