Python语言(三)类型扩展

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

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])
>>> s
set([1, 2, 3])
通过add增加元素:

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

>>> s.remove(4)
>>> s
set([1, 2, 3])

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




  • 0
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值