将学习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}