Python语言(三)类型扩展

来源:互联网 发布:gif动态图片编辑软件 编辑:程序博客网 时间:2024/04/20 17:20

仅仅提供基本数据类型是不够的,当处理超过一个整数、字符串等时,需要一种方式将他们组合起来,并且提供操作它们的方法。

Python提供list,tuple,set和dict类型,大大增强了数据表示的能力。它们有各自的特点和用场。

list:

list是一种有序的数据集合,可以对一个list对象进行插入、添加、替换操作,改变这个list对象的元素。

##########>>> classmates = ['Michael', 'Bob', 'Tracy']>>> classmates['Michael', 'Bob', 'Tracy']
classmates是一个list对象,包含三个元素,分别是Michael、Bob和Tracy。可以用索引访问list的每个元素:

>>> classmates[0]'Michael'>>> classmates[1]'Bob'>>> classmates[2]'Tracy'
下标是从0开始,最大是len(classmates)-1。通过append、insert、pop和赋值修改list的值。

#添加操作>>> classmates.append('Adam')>>> classmates['Michael', 'Bob', 'Tracy', 'Adam']#插入>>> classmates.insert(1, 'Jack')>>> classmates['Michael', 'Jack', 'Bob', 'Tracy', 'Adam']#删除>>> classmates.pop()'Adam'>>> classmates['Michael', 'Jack', 'Bob', 'Tracy']   #末尾删除>>> classmates.pop(1)'Jack'>>> classmates['Michael', 'Bob', 'Tracy']           #通过pop带的参数,指定删除的下标#替换>>> classmates[1] = 'Sarah'>>> classmates['Michael', 'Sarah', 'Tracy']
list的另一个特点是,它的元素不需要是同一个数据类型,并且可以嵌套,也就是其元素是另一个list。

#list元素不必是同样类型>>> L = ['Apple', 123, True]#list元素是另一个list>>> p = ['asp', 'php']>>> s = ['python', 'java', p, 'scheme']
要拿到'php'可以写p[1]或者s[2][1],因此s可以看成是一个二维数组。

tuple:

而tuple形式上与list相似,通过下标查看数据,但是不允许修改,因此没有插入、添加和替换操作。tuple在初始化时就确定其元素了,之后就不允许再被修改了。

>>> t = (1, 2)>>> t(1, 2)
但有两点需要注意:

一、只包含一个元素时,t1 = (1,)方式定义,因为(1)表示1这个数,加逗号避免歧义;

二、如果tuple元素是list,由于list是可以修改的,那么该元素的内容是可以修改的。

>>> t = ('a', 'b', ['A', 'B'])>>> t[2][0] = 'X'>>> t[2][1] = 'Y'>>> t('a', 'b', ['X', 'Y'])
这个tuple对象t包含三个元素,分别是'a', 'b'和一个list。tuple不可变是指t指向的元素不变,但是list的内容是可以修改的,通过下图说明更加清晰。

定义时的tuple元素:

tuple-0


当我们把list的元素'A''B'修改为'X''Y'后,tuple变为:

tuple-1

dict:

dcit全称dictionary,在其他语言里也叫map,用来表示键值对。查询速度非常快,因为它的键对应的值的存储位置是通过hash函数确立的,参数是键,所以一个dict内的键必须是唯一的,并且是不可变对象,如字符串、数字等。

#定义dict,通过键查询对应的值>>> d = {'Michael': 95, 'Bob': 75, 'Tracy': 85}>>> d['Michael']95#给dict中的元素赋值,如果不存在那么创建这个键值对,多次修改将改变对应的值>>> d['Jack'] = 90>>> d['Jack']90>>> d['Jack'] = 88>>> d['Jack']88#如果要删除其中的对,可以通过pop(key)的方式删除>>> d.pop('Bob')75>>> d{'Michael': 95, 'Tracy': 85}

请务必注意,dict内部存放的顺序和key放入的顺序是没有关系的。

和list比较,dict有以下几个特点:

  1. 查找和插入的速度极快,不会随着key的增加而增加;
  2. 需要占用大量的内存,内存浪费多。

而list相反:

  1. 查找和插入的时间随着元素的增加而增加;
  2. 占用空间小,浪费内存很少。

所以,dict是用空间来换取时间的一种方法。

set:

set与dict类似,但是不存储值,set元素也不能重复的。

#重复元素在set中过滤掉>>> s = set([1, 1, 2, 2, 3, 3])>>> sset([1, 2, 3])
通过add增加元素:

#重复增加,不起作用,因为元素必须唯一>>> s.add(4)>>> sset([1, 2, 3, 4])>>> s.add(4)>>> sset([1, 2, 3, 4])
remove删除元素:

>>> s.remove(4)>>> sset([1, 2, 3])#set对应于数学上的无序、唯一集合,可以进行交并运算>>> s1 = set([1, 2, 3])>>> s2 = set([2, 3, 4])>>> s1 & s2set([2, 3])>>> s1 | s2set([1, 2, 3, 4])




0 0
原创粉丝点击