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元素:
当我们把list的元素'A'
和'B'
修改为'X'
和'Y'
后,tuple变为:
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有以下几个特点:
- 查找和插入的速度极快,不会随着key的增加而增加;
- 需要占用大量的内存,内存浪费多。
而list相反:
- 查找和插入的时间随着元素的增加而增加;
- 占用空间小,浪费内存很少。
所以,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
- Python语言(三)类型扩展
- 使用C语言扩展Python(三)
- 使用C语言编写Python扩展——创建自定义类型(1)
- 使用C语言编写Python扩展——创建自定义类型(2)
- Python扩展内置类型
- Python语言(二)类型
- 使用C语言扩展Python(一)
- C语言扩展Python
- C语言扩展Python
- Python:C语言扩展
- Python基础(三)之List类型
- Python基础(三)之tuple类型
- python 学习(三)变量类型
- Python学习之运算类型&(三)
- 自定义python自建类型(三)优化
- python语言的类型
- Python 的C语言扩展
- 使用C语言扩展Python
- ios 局部变量,全局变量,成员变量
- 真正的大数据“圈内人”包含哪几种人
- Codeforces Round #249 (Div. 2) —— B
- LoadRunner中think time详解 .
- hdu 1597 find the nth digit
- Python语言(三)类型扩展
- 习题5-6 对称轴 UVa1595
- Java 反射机制
- 用python给文件夹下所有图片进行缩放处理
- IE6兼容性总汇
- LWIP程序OPT.h头文件的各种定义
- hdu1559,1081最大子矩阵和的两种题型
- ftp批量下载 单个下载
- LeetCode-Rotate List