Python的数据类型及编码

 

一、数据类型

    数字(整形、长整型、浮点型、复数)

    字符串

    列表

    元组

    字典

    集合

    字节串

 

二、数据类型的总结

    每个数据类型所占存储空间的大小是不一样的(从低到高)

    数字

    字符串

    集合:无序,无序存储索引相关信息

    元组:有序,有序存储索引相关信息,不可变

    列表:有序,有序存储索引相关信息,可变,需要处理数据的增删改查

    字典:无序,需要存储key与value映射的相关信息,可变,需要处理数据的增删改查

    

    按可不可变来区分:

    可变是指修改数据类型后,他所在的内存空间是否发生变化。

     列表、字典为不可变类型。数字、字符、元组为不可变类型

 

三、数字

 python支持int(整数)、float(浮点型)、bool(布尔型)、complex(复数)

 生成一个数字类型

 x = 9  

 实际上生成一个数字类型的操作是这样

 x = int(9)

  其他的同理

 

四、字符串

  name = "abdefg"

  在Python中我们关注的事它的切片操作

  >>> name[0:3]

  abc'

  在取索引值的时候,我们从0开始到2.有头无尾

  在反向取值的时候从-1开始

  >>> name[-1]

  'g'

  还可以这样

  >>> name[0:6:2]

  'ace'

  从0开始到6步长为2

  

  移除空白strip,主要是移除字符转两边的空白格

  >>> name = "     abcdefg         "

  >>> name.strip()
  'abcdefg'

  切分split

  >>> name.split("d")

  [' abc', 'efg ']

  以d分为一个列表。

  字符串的内建函数

 

 五、列表

 序列是Python中最基本的数据结构。序列中的每个元素都分配一个数字 - 它的位置,或索引,第一个索引是0,第二个索引是1,依此类推。

Python有6个序列的内置类型,但最常见的是列表和元组。

序列都可以进行的操作包括索引,切片,加,乘,检查成员。

此外,Python已经内置确定序列的长度以及确定最大和最小的元素的方法。

列表是最常用的Python数据类型,它可以作为一个方括号内的逗号分隔值出现。

列表的数据项不需要具有相同的类型

创建一个列表,只要把逗号分隔的不同的数据项使用方括号括起来即可。如下所示:

list1 = ['Google', 'Runoob', 1997, 2000];

list2 = [1, 2, 3, 4, 5 ];

list3 = ["a", "b", "c", "d"];

与字符串的索引一样,列表索引从0开始。列表可以进行截取、组合等。

list1 = ['Google', 'Runoob', 1997, 2000];

list2 = [1, 2, 3, 4, 5, 6, 7 ];

print ("list1[0]: ", list1[0])

print ("list2[1:5]: ", list2[1:5])

list1[0]: Google
list2[1:5]: [2, 3, 4, 5]

list = ['Google', 'Runoob', 1997, 2000]

print ("第三个元素为 : ", list[2]) list[2] = 2001

print ("更新后的第三个元素为 : ", list[2])

第三个元素为 : 1997

更新后的第三个元素为 : 2001

list = ['Google', 'Runoob', 1997, 2000]

print (list) del list[2]

print ("删除第三个元素 : ", list)

 

列表函数和方法

 

六、字典

 

字典是另一种可变容器模型,且可存储任意类型对象。

字典的每个键值(key=>value)对用冒号(:)分割,每个对之间用逗号(,)分割,整个字典包括在花括号({})中 ,格式如下所示:

d = {key1 : value1, key2 : value2 }

键必须是唯一的,但值则不必。

值可以取任何数据类型,但键必须是不可变的,如字符串,数字或元组。

访问字典里的值

dict = {'Name': 'Runoob', 'Age': 7, 'Class': 'First'}
print ("dict['Name']: ", dict['Name'])
print ("dict['Age']: ", dict['Age'])

 字典的值和方法

七、元组

 元组(tuple)是一种静态的(immutable)或者说是不可变(unchangeable)的数据结构,里面的元素按照一定的顺序排列。它是静态的,所以元组里的元素不能被修改。

元组用于给数据分组。元组中的每一个元素称之为“项”(item)。

元组中的值被包装在括号中,并用逗号分隔,空元组可以写成coral=(),不过只有一项元素的元组必须使用逗号:coral = ('blue coral',)。

如果使用print()函数打印元组,会得到如下的输出,其中元组依然‘()’用括号包裹。

元组的不能增删改,只能以索引的方式获取。

 八、集合

>>> s = {1,2.3,'a'}  

>>> L1 = [1,1,2,4,3]  

>>> T1 = (2,4,6,6,6,7)  

>>> s = {1}  

>>> type(s)  

<class 'set'>  

>>> s = set(L1) #从列表到集合  

>>> s  

{1, 2, 3, 4}  

>>> s = set(T1) #从tuple到set  

>>> s  

{2, 4, 6, 7}  

 

set 基本函数与操作:

s.add( x ) 将元素 x 添加到集合s中,若重复则不进行任何操作

>>> s = {1,2,'a'}  

>>> s.add('b')  

>>> s  

{1, 'a', 2, 'b'}  

>>> s.add(1)  

>>> s  

{1, 'a', 2, 'b'} 

s.update( x ) 将集合 x 并入原集合s中,x 还可以是列表,元组,字典等,x 可以有多个,用逗号分开

>>> s  

{1, 'a', 2, 'b'}  

>>> s.update({1,3})  

>>> s  

{1, 'a', 3, 'b', 2}  

>>> s.update([1,4])  

>>> s  

{1, 'a', 3, 4, 'b', 2}  

>>> s.update(1)  

Traceback (most recent call last):  

 File "<pyshell#264>", line 1, in <module>  

 s.update(1)  

TypeError: 'int' object is not iterable 

s.discard( x )将 x 从集合s中移除,若x不存在,不会引发错误

>>> s  

{1, 'a', 3, 4, 'b', 2}  

>>> s.discard(1)  

>>> s  

{'a', 3, 4, 'b', 2}  

>>> s.discard(1)  

>>> s  

{'a', 3, 4, 'b', 2}  

s.remove( x ) 将 x 从集合s中移除,若x不存在,会引发错误

>>> s  

{'a', 3, 4, 'b', 2}  

>>> s.remove('a')  

>>> s  

{3, 4, 'b', 2}  

>>> s.remove('a')  

Traceback (most recent call last):  

 File "<pyshell#273>", line 1, in <module>  

 s.remove('a')  

KeyError: 'a'  

s.pop() 随机删除并返回集合s中某个值,注意,因为set是无序的,不支持下标操作,没有所谓的最后一个,pop()移除随机一个元素,这和其他数据结构不同

 >>> s  

{3, 4, 'b', 2}  

>>> s.pop()  

3   

s.clear() 清空

len(s) set支持len操作

set同样支持in操作

s.union( x ) 返回s与集合x的交集,不改变原集合s,x 也可以是列表,元组,字典。

s.intersection( x ) 返回s与集合x的并集,不改变s, x 也可以是列表,元组,字典。

s.difference( x )返回在集合s中而不在集合 x 中的元素的集合,不改变集合s, x 也可以是列表,元组,字典。

s.symmetric_difference( x ) 返回s和集合x的对称差集,即只在其中一个集合中出现的元素,不改变集合s, x 也可以是列表,元组,字典。

 s.issubset( x ) 判断 集合s 是否是 集合x 子集

s.issuperset( x ) 判断 集合x 是否是集合s的子集

 求交集,并集,差集,对称差集的另一种方法:

 >>> s1 = {1,2,3,'a'}  
>>> s2 = {3,4,'b'}  

>>> s1 & s2  #交集  

{3}  

>>> s1 | s2   #并集  

{1, 'a', 3, 4, 'b', 2}  

>>> s1 - s2  #差集  

{1, 'a', 2}  

>>> s1 ^ s2  #对称差集  

{1, 2, 4, 'b', 'a'}  

九、字符编码

x = "charlotte"
上述语句在计算机内部的执行顺序是这样的 
- 在内存中创建一个字符串 'charlotte' 
- 在程序栈寄存器中创建一个变量x
- 使得寄存器中的变量t指向'charlotte' (也就是把字符串'charlotte'的地址赋给x)
虽然内存中是unicode保存,但是输出到文件中就是utf-8或者GBK等格式了,根据文件的编码类型不同而不同
posted @ 2017-09-16 03:16  zz小公子  阅读(272)  评论(0编辑  收藏  举报