Python初级教程(05): 数据类型
在本教程中,你将了解Python中的各种数据类型。
Python中的每个值都有一个数据类型。由于Python中任何东西都是对象,因此数据类型实际上是类,而变量是这些类的实例(对象)。
Python中有各种数据类型。下面列出了一些重要类型。
1. 数值型
整数、浮点数和复数都属于数值型(numeric)。在Python中,他们被分别定义为int
,float
和complex
类。
我们可以使用type()
函数来知道变量或值属于哪个类,以及使用isinstance()
函数来检查对象是否属于特定类。
a = 5
print(a, "is of type", type(a))
a = 2.0
print(a, "is of type", type(a))
a = 1+2j
print(a, "is complex number?", isinstance(1+2j,complex))
输出为:
5 is of type <class 'int'>
2.0 is of type <class 'float'>
(1+2j) is complex number? True
-
整数可以是任意长度,只受可用内存的限制。
-
浮点数最多可精确到17位有效数字(我用的是python 3.7.3)。是否有小数点(
.
)可区分整数和浮点数。1
是整数,1.0
是浮点数。 -
复数以
x + yj
形式写出,其中x
是实部,y
是虚部。
看些例子:
>>> a = 11111111111111111111111111111111111111111 + 1
>>> a
11111111111111111111111111111111111111112
>>> b = 12.01234567890123456789
>>> b
12.012345678901234
>>> c = 1 + 2j
>>> c
(1+2j)
请注意,浮点型变量
b
被截断。
2. 列表
列表(list)是有序的元素序列。它是Python中最常用的数据类型之一,非常灵活。列表中的所有元素不需要是同一类型。
声明列表非常简单。元素被包含在括号[ ]
中,元素用逗号分隔开。
>>> a = [1, 2.2, 'python']
我们可以使用切片运算符[ ]
从列表中提取一个元素或一系列元素。在Python中,索引是从0
开始的。
a = [5, 10, 15, 20, 25, 30, 35, 40]
# a[2] = 15
print("a[2] = ", a[2])
# a[0:3] = [5, 10, 15]
print("a[0:3] = ", a[0:3])
# a[5:] = [30, 35, 40]
print("a[5:] = ", a[5:])
输出为:
a[2] = 15
a[0:3] = [5, 10, 15]
a[5:] = [30, 35, 40]
列表是可变的,意思是列表元素的值可以改变。例如:
>>> a = [1, 2, 3]
>>> a[2]=4
>>> a
[1, 2, 4]
3. 元组
与列表类似,元组(tuple)也是有序序列。唯一的区别是元组是不可变的。创建的元组无法修改。
元组用于保护数据,通常比列表更快,因为它不能动态更改。
元素包含在括号( )
中,其中元素以逗号分隔开。
t = (5,'program', 1+3j)
我们可以使用切片运算符[ ]
来提取元素,但我们无法更改其值。
t = (5,'program', 1+3j)
# t[1] = 'program'
print("t[1] = ", t[1])
# t[0:3] = (5, 'program', (1+3j))
print("t[0:3] = ", t[0:3])
# Generates error
# Tuples are immutable
t[0] = 10
输出为:
t[1] = program
t[0:3] = (5, 'program', (1+3j))
Traceback (most recent call last):
File "<stdin>", line 11, in <module>
t[0] = 10
TypeError: 'tuple' object does not support item assignment
4. 字符串
字符串(strings)是Unicode字符序列。我们可以使用单引号或双引号来表示字符串。多行字符串可以使用三重引号表示,'''
或"""
。
>>> s = "This is a string"
>>> s = """This is a
perfect example of
multi-line comments"""
像列表和元组一样,切片运算符[]
可用于字符串。与元组类似,字符串是不可变的。
s = 'Hello world!'
# s[4] = 'o'
print("s[4] = ", s[4])
# s[6:11] = 'world'
print("s[6:11] = ", s[6:11])
# Generates error
# Strings are immutable in Python
s[5] ='d'
输出为:
s[4] = o
s[6:11] = world
Traceback (most recent call last):
File "<stdin>", line 11, in <module>
s[5] ='d'
TypeError: 'str' object does not support item assignment
5. 集合
集合(set)是一组无序、无重复序列。元素包含在大括号{ }
内,元素用逗号分隔开。集合中的元素无先后顺序。
a = {5, 2, 3, 1, 4}
# printing set variable
print("a = ", a)
# data type of variable a
print(type(a))
输出为:
a = {1, 2, 3, 4, 5}
<class 'set'>
我们可以对两个集合进行一些操作,比如取并集,交集等。集合的元素具有唯一性,消除了重复。
>>> set1 = {1, 2, 3}
>>> set2 = {3, 4, 5}
>>> set1.union(set2) ##并集
{1, 2, 3, 4, 5}
>>> set1.intersection(set2) ##交集
{3}
>>> a = {1, 2, 2, 3 ,3, 3}
>>> a
{1, 2, 3} ##元素具有唯一性
既然,集合是无序的,索引就没有意义了。因此切片操作符[ ]
不起作用。比如:
>>> a = {1,2,3}
>>> a[1]
Traceback (most recent call last):
File "<string>", line 301, in runcode
File "<interactive input>", line 1, in <module>
TypeError: 'set' object does not support indexing
6. 字典
字典(dictionary)是键值对(key-value
)的无序集合。
它通常在我们拥有大量数据时使用。字典针对检索数据进行了优化。依靠键(key
)来检索值(value
)。
在Python中,字典在大括号{ }
中定义,每个元素都是一个key:value
。键和值可以是任何类型。
>>> d = {1:'value', 'key':2}
>>> type(d)
<class 'dict'>
我们使用key
来检索相应的value
,但不能相反。比如:
d = {1:'value','key':2}
print(type(d))
print("d[1] = ", d[1]);
print("d['key'] = ", d['key']);
# Generates error
print("d[2] = ", d[2]);
输出为:
<class 'dict'>
d[1] = value
d['key'] = 2
Traceback (most recent call last):
File "<stdin>", line 9, in <module>
print("d[2] = ", d[2]);
KeyError: 2
7. 数据类型之间的转换
通过使用不同的类型转换函数,如:int()
,float()
,str()
等,可以在不同的数据类型之间进行转换。
>>> float(5)
5.0
从float
到int
的转换就是将小数部分去掉。例如:
>>> int(10.6)
10
>>> int(-10.6)
-10
对于字符串的转换,必须包含兼容的值。比如:
>>> float('2.5')
2.5
>>> str(25)
'25'
>>> int('1p') ##整数中不包含字符p
Traceback (most recent call last):
File "<string>", line 301, in runcode
File "<interactive input>", line 1, in <module>
ValueError: invalid literal for int() with base 10: '1p'
我们甚至可以将一个序列转换为另一个。比如:
>>> set([1, 2, 3]) ##将列表转化为集合
{1, 2, 3}
>>> tuple({5, 6, 7}) ##将集合转化为元组
(5, 6, 7)
>>> list('hello') ##将字符串转化为字符列表
['h', 'e', 'l', 'l', 'o']
要转换为字典,每个元素必须是由两个子元素构成。比如:
>>> dict([[1, 2], [3, 4]])
{1: 2, 3: 4}
>>> dict([(3, 26), (4, 44)])
{3: 26, 4: 44}
今天的内容就讲到这。
感谢您的阅读!想了解更多有关R语言技巧,请关注我的微信公众号“R语言和Python学堂”,我将定期更新相关文章。
