在python中最常用的四个数据结构为,元组
,数组
,字典
,集合
,在编写程序的时候,基本上都能碰到这四样东西。
内置数据结构是python中特有的一些属性,这些可能是你第一次见过的,后面会慢慢的接触到,不管是做什么项目,必须会用到他们,才能体现python的独特性。
元组
在这四个数据结构中是属于最基础的,为了程序的效率考虑,元组一旦创建了以后就不能够进行修改,很多人可能理解不了这个,认为元组不够灵活,但是在实际项目中编写代码时,经常会碰到这种情况,例如某一个函数返回的结果,并不能也没有必要去修改这个结果,最快速的方式是返回一个元组类型,这是最可取的一种方式。
元组使用小括号(),小括号里面可以包含各个元素,相当于组成一个简单的队列。
tup1 = ('physics', 'chemistry', 1997, 2000)
tup2 = (1, 2, 3, 4, 5 )
tup3 = "a", "b", "c", "d"
元组有自己的索引,通过索引可以遍历到各个数据。
>>> tup1 = ('physics', 'chemistry', 1997, 2000)
>>> print tup1[3]
2000
>>>
cmp(tuple1, tuple2) 比较两个元组元素。
len(tuple) 计算元组元素个数。
max(tuple) 返回元组中元素最大值。
min(tuple) 返回元组中元素最小值。
tuple(seq) 将列表转换为元组。
基本上每一种编程语言都有自己的数组列表,用来存放一组数据,数组在创建了以后可以进行添加,删除等一些常见的操作,这是比元组来得自由得多,数组列表是最经常用到的。
list.append(obj) 在列表末尾添加新的对象
list.count(obj) 统计某个元素在列表中出现的次数
list.extend(seq) 在列表末尾一次性追加另一个序列中的多个值(用新列表扩展原来的列表)
list.index(obj) 从列表中找出某个值第一个匹配项的索引位置,索引从0开始
list.insert(index, obj) 将对象插入列表
list.pop(obj=list[-1]) 移除列表中的一个元素(默认最后一个元素),并且返回该元素的值
list.remove(obj) 移除列表中某个值的第一个匹配项
list.reverse() 反向列表中元素,倒转
list.sort([func]) 对原列表进行排序
python的set是一个无序不重复元素集,基本功能包括关系测试和消除重复元素. 集合对象还支持并、交、差、对称差等。sets 支持 x in set、 len(set)、和 for x in set。作为一个无序的集合,sets不记录元素位置或者插入点。因此,sets不支持 indexing(数字索引如[2]), slicing(如[1:3]), 或其它类序列(sequence-like)的操作。
集合一个重要的特性是不重复的元素集,即集合里的每个元素都是不同的,如果插入的集合中存在这个元素则没有元素增加,这种不重复,对于一些场景特别的时候,比如需要统计每天的新增用户,可能新增的用户有多次的访问,但只能取一次,使用set就非常的合适了。
set的集合操作,对于数据统计非常有用,非常方便。包括并集、交集、差集和对称差集,例如:
a = t | s # t 和 s的并集
b = t & s # t 和 s的交集
c = t – s # 求差集(项在t中,但不在s中)
d = t ^ s # 对称差集(项在t或s中,但不会同时出现在二者中)
字典(dictionary)是除列表之外python中最灵活的内置数据结构类型。列表是有序的对象结合,字典是无序的对象集合。两者之间的区别在于:字典当中的元素是通过键来存取的,而不是通过偏移存取。
字典由键和对应的值组成。字典也被称作关联数组或哈希表。基本语法如下:
dict = {'Alice': '2341', 'Beth': '9102', 'Cecil': '3258'}
dict = {};
每个键与值必须用冒号隔开(,每对用逗号分割,整体放在花括号中({})。键必须独一无二,但值则不必;值可以取任何数据类型,但必须是不可变的,如字符串,数或元组。
#!/usr/bin/python
dict = {'name': 'Zara', 'age': 7, 'class': 'First'}
print "dict['name']: ", dict['name']
print "dict['age']: ", dict['age']