本节介绍包括数值、字符串和数组在内的简单数据类型。
Python中有三种不同的数值类型:int(整数)、float(浮点数)和complex(复数)。
和Java或者C语言中的int类型不同,Python中的int类型是无限精度的,例如:
Python依据IEEE 754标准使用二进制表示float(浮点数),所以存在表示精度的问题,例如:
>>> 0.1 == 0.100000000000000000000001 True
可以导入decimal模块并使用十进制表示完整的小数,例如:
>>> import decimal >>> a = decimal.Decimal('0.1') >>> b = decimal.Decimal('0.10000000000000000000001') >>> a == b False
在傅里叶变换中会用到复数。复数在Python中是一个基本数据类型(complex),例如:
>>> complex(2,3) (2+3j)
一个复数有一些内置的访问器:
>>> z = 2+3j >>> z.real 2.0 >>> z.imag 3.0 >>> z.conjugate() (2-3j)
几个内置函数都支持复数运算:
>>> abs(3 + 4j) 5.0 >>> pow(3 + 4j, 2) (-7+24j)
标准模块cmath具有处理复数的更多功能:
>>> import cmath >>> cmath.sin(2 + 3j) (9.15449914691143-4.168906959966565j)
用于数值运算的算术运算符说明列表如表2-1所示。
表2-1 算术运算符
对于"/"运算,就算分子分母都是int,返回的也将是浮点数,例如:
>>> print(1/3) 0.3333333333333333
Python支持不同的数字类型相加,它使用数字类型强制转换的方式来解决数字类型不一致的问题,就是说它会将一个操作数转换为与另一个操作数相同的数据类型。
如果有一个操作数是复数,则另一个操作数被转换为复数:
>>> 3.0 + (5+6j) # 非复数转复数 (8+6j)
整数转换为浮点数:
>>> 6 + 7.0 # 非浮点型转浮点型 13.0
Python代码中一般一行就是一条语句,但是可以使用斜杠(\)将一条语句分为多行显示。例子代码如下:
>>> a = 1 >>> b = 2 >>> c = 3 >>> total = a + \ ... b + \ ... c >>> total 6
在计算机编程中,字符串是一个字符序列,例如,"hello"是一个包含字符序列'h'、'e'、'l'、'l'和'o'的字符串。
我们使用单引号或双引号来表示Python中的字符串,例如:
可以通过三种方式访问字符串中的字符。
(1)索引。一种方法是将字符串视为列表并使用索引值,例如:
(2)负索引。与列表类似,Python允许对其字符串进行负索引,例如:
(3)切片。使用切片运算符冒号(:)访问字符串中的字符范围,例如:
可以在Python中创建多行字符串,为此,我们使用三个双引号"""或三个单引号''',例如:
在上面的示例中,封闭三引号内的任何内容都是一个多行字符串。
可以使用strip()方法去掉字符串首尾的空格或者指定的字符。
term = " hi "; print(term.strip()); # 去除首尾空格
使用split()方法将句子分成单词。下面的Mary是一个单一的字符串,尽管这是一个句子,但这些词语并没有表示成严谨的单位,为此,需要一种不同的数据类型:字符串列表,其中每个字符串对应一个单词。使用split()方法来把句子切分成单词:
>>> mary = 'Mary had a little lamb' >>> mary.split() ['Mary', 'had', 'a', 'little', 'lamb']
split()方法根据空格拆分mary,返回的结果是mary中的单词列表,此列表包含len()函数演示的5个项目。对于mary,len()函数返回字符串中的字符数(包括空格)。
空白字符包括空格' ',换行符'\ n'和制表符'\ t'等。split()方法可以分隔这些字符的任何组合序列:
通过提供可选参数,split('x')可用于在特定子字符串'x'上拆分字符串。如果没有指定'x',split()只是在所有空格上分割,如下所示。
但是如果你想将一个字符串拆分成一个字符列表呢?在Python中,字符只是长度为1的字符串。list()函数将字符串转换为单个字符的列表:
>>> list('hello world') ['h', 'e', 'l', 'l', 'o', ' ', 'w', 'o', 'r', 'l', 'd']
如果有一个单词列表,可以使用join()方法将它们重新组合成一个单独的字符串。在“分隔符”字符串'x'上调用'x'.join(y)会连接列表y中由'x'分隔的每个元素。下面,mwords中的单词用空格连接回句子字符串:
>>> mwords ['Mary', 'had', 'a', 'little', 'lamb'] >>> ' '.join(mwords) 'Mary had a little lamb'
也可以在空字符串''上调用该方法作为分隔符,效果是列表中的元素连接在一起,元素之间没有任何内容。下面,将一个字符列表放回到原始字符串中:
>>> hi = 'hello world' >>> hichars = list(hi) >>> hichars ['h', 'e', 'l', 'l', 'o', ' ', 'w', 'o', 'r', 'l', 'd'] >>> ''.join(hichars) 'hello world'
对一个字符串取子串的示例代码如下:
>>> x = "Hello World!" >>> x[2:] 'llo World!' >>> x[:2] 'He' >>> x[:-2] 'Hello Worl' >>> x[-2:] 'd!' >>> x[2:-2] 'llo Worl'
使用ord()函数和chr()函数实现字符串和整数之间的互相转换:
>>> a = 'v' >>> i = ord(a) >>> chr(i) 'v'
字符串插值是将变量的值替换为字符串中的占位符的过程,例如:
创建一个数组,然后向这个数组中添加元素的代码如下:
>>> temp_list = [] >>> print(temp_list) [] >>> temp_list.append("one") >>> temp_list.append("two") >>> print(temp_list) ['one', 'two'] >>>
创建一个指定长度的数组:
>>> size = 10 >>> lst = [None] * size >>> lst [None, None, None, None, None, None, None, None, None, None]