将学习Python中的不同数据类型。
Data types in Python
Python中的每个值都有一个数据类型。因为在Python编程汇总,所有的东西都是对象,数据类型实际上是类,变量实际上是类的实例(对象)。
Python中有各种数据类型,列出一些比较重要的。
Python Numbers
整型、浮点型、复数属于Python的数字类别。
他们在Python中分别被定义为int 、 float 、 complex 对象。
我们可以用 type() 函数看一个变量或一个值属于哪个类,用 isinstance() 函数来查看一个对象是不是属于特定的类。(java中instanceof 函数用来判断一个对象是否为一个对象的实例)
a = 5;
print(a,"is type of ",type(a);
#输出:(5, 'is of type', <type 'int'>)
b = 2.0 ;
print(b,"is type of ",type(b));
#输出:(2.0, 'is of type', <type 'float'>)
c = 1+2j;
print(a,"is complex number",isinstance(1+2j,complex));
#输出:((1+2j), 'is complex number', True)
#c = 1+3x ;
SyntaxError: invalid syntax
整数长度可以任意,只有变量的内存大小才对其有限制。
浮点数可以精确到小数点15位。整数和浮点数由小数点分隔,1是整数,1.0是浮点数。
虚数的格式:x + yj。x 是实数,y 是虚数
a = 1234560308238727383992993988
print(a)
#输出:1234560308238727383992993988L
b = 0.123456789123456789
print(b)
#输出:0.12345678912345678
c = 1+3j
print(c)
#输出:1+3j
注意:b的数值,只保留了小数点后15位。
Python List
List是一个有序的元素序列。数组是Python最常用的数据类型,非常灵活。
数组中的元素的数据类型可以不一致。
可以非常直接声明一个数组,数组中的元素以逗号分隔,以 [ ] 包括。
a = [1,2,3,"abc"] ;
我们可以用切片运算符 [ ] 从列表 中获取一个或多个元素。Python中下标从0开始。
a = [1,4,5,"abc"]
# a[2] = 5
#a[1:3] = [4,5]
#a[1:10] = [4,5,"abc"]
#a[2:] = [5,"abc"]
#a[:-1] = [1,4,5]
#a[-1] = ["abc"]
#a[-2:] = [5,"abc"]
列表是可变的,就是说列表中的元素是可以被改变的
a = [1,4,7,9];
a[2]=100;
print(a);
#输出:[1,4,100,9]
Python Tuple
元祖是有序的元素序列,和列表一样。但元祖是不可变的,列表是可变的。元祖一经创建,就不能修改其内容了。
元祖用于写入保护数据,比列表效率高,因为元祖不能动态的更改。
元祖用 () 定义,其中的元素使用逗号分隔。
a = (1,5,"ab",0.99) ;
我们可以用切片操作符 [ ] 来提取元素,但是我们不能改变元素的值。
a = (1,3,5,8) ;
print(a[1])
#输出:3
a[1] = 100;
#报错:
TypeError: 'tuple' object does not support item assignment
Python Strings
字符串是Unicode字符序列。我们可以用单引号、双引号来表示字符串。三重双引号 """xxx""" 或 '''xxx''' 可以用来表示多行字符串。
a = """abc
dfb
dbg"""
print(a)
#结果: 'abc\ndfb\ndbg'
字符串类似于列表或元祖,也可以用操作符 [ ] 。但字符串是不可改变的。
a = 'Hello World' ;
print(a[1]); # 'e'
a[1] = "DD" ;
TypeError: 'str' object does not support item assignment
Python Set
集合是一个元素唯一的无序集合。Set有大括号{ } 里的由逗号分隔的值定义。Set集合里的元素是无序的。
a = {1,2,3,4,5}
print(a) # set([1, 2, 3, 4, 5])
print(type(a)) # <type 'set'>
我们可以在两个集合上执行一些操作,比如并集、交集。Set集合具有唯一值,他们消除重复。
a = {1,2,2,2,3,3,4,5};
print(a);
# set([1, 2, 3, 4, 5])
a = {1,2,3,,4,5}
SyntaxError: invalid syntax
Since, set are unordered collection, indexing has no meaning. Hence the slicing
operator [] does not work.
因为Set是无序集合,下标因此毫无意义。也导致操作符 [ ] 不起作用。
a = {1,2,3,4,5} ;
print(a[1]) ;
TypeError: 'set' object does not support indexing
Python Dictionary
字典是无序的key-value对。他经常应用于大批量数据的场景。
字典为检索数据做了优化。检索数据时我们必须知道其key。
在Python中,用大括号{ } 定义字典,其中的每个元素都使用 key:value 的格式。键、值的数据类型任意。
a = {1:"a",2:"b"} ;
print(a) # {1: 'a', 2: 'b'}
print(type(a)) # <type 'dict'>
我们使用key 来检索对应的value,而不是使用value 来检索相应的 key。
a = {1:"key","value":2} ;
print(a[1]) # 'key'
print(a["value"]) # 2
#不能通过value找key
print(a[2]) # 直接报错。
Conversion between data types
数据类型之间的转换
我们可以使用不同的数据类型转换函数,例如int(),float(),str()等等,来转换不同的数据类型。就是强转。
float(5)
#结果是 5.0
从float到int的转换,将截断该值,使其趋向于0。
int(5.63)
#结果是 5
int(-10.9)
#结果是 -10
与字符串的转换,必须包含兼容的值。
float(2.5)
#结果是 2.5
str(25)
#结果是 '25'
int('1a')
#报错
Traceback (most recent call last):
File "<pyshell#3>", line 1, in <module>
int('1p')
ValueError: invalid literal for int() with base 10: '1p'
我们甚至可以把一个序列转换为另一个序列。
set([1,2,3])
# {1,2,3}
tuple({1,2,3})
#(1,2,3)
list('hello')
#['h','e','l','l','o']
要转换为字典,每个元素都得是一对。
dict([[1,2],[3,4]])
# {1: 2, 3: 4}
dict([['a',"hello"]])
# {'a': 'hello'}
dict([['a',"hello"],[1,4]])
# {'a': 'hello', 1: 4}