购买
下载掌阅APP,畅读海量书库
立即打开
畅读海量书库
扫码下载掌阅APP

2.3 简单数据类型

本节介绍包括数值、字符串和数组在内的简单数据类型。

2.3.1 数值

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

2.3.2 字符串

在计算机编程中,字符串是一个字符序列,例如,"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'

字符串插值是将变量的值替换为字符串中的占位符的过程,例如:

2.3.3 数组

创建一个数组,然后向这个数组中添加元素的代码如下:

     >>> temp_list = []
     >>> print(temp_list)
     []
     >>> temp_list.append("one")
     >>> temp_list.append("two")
     >>> print(temp_list)
     ['one', 'two']
     >>>

创建一个指定长度的数组: heZ8/7Ulbte0HYbymKANH2KzxL8Ql8nw1NIilX/lOC/xwKqZq5f1eQ9+ehUGxMCZ

     >>> size = 10
     >>> lst = [None] * size
     >>> lst
     [None, None, None, None, None, None, None, None, None, None]
点击中间区域
呼出菜单
上一章
目录
下一章
×