list和tuple
详见http://www.runoob.com/python/python-lists.html
list和tuple是Python内置的有序集合,一个可变,一个不可变。根据需要来选择使用
list列表
- 简介
- 列表是python内置的一种数据类型
- 可以随时添加和删除其中的元素
- list是可变的有序表
- list的元素可以为不同数据类型
- list可以嵌套list,相当于多维数组
- 使用[]标识
- 使用索引访问list中的数据(索引从0开始)
- classname[2] 取出classname中的第三个数据
- 索引超出list长度时报IndexError错误
- 可以倒序取数据
classname[-2] 取出倒数第二个数据 - 取出list内嵌套list的数据
classname[1][3]
- 向list末尾追加元素 append()
classname.append(‘xiaoming’) - 插入元素到指定位置 insert(位置,内容)
classname.insert(3,‘jack’) - 删除list末尾元素 pop()
classname.pop() - 删除指定位置的元素 pop(位置)
classname.pop(2) - 把某个元素替换成别的元素,可以直接赋值给对应的索引位置
classname[2] = ‘wang’ - 存在空list,长度为0
- 两个list相加,可以使用+号
list1 = [1,2,3]
list2 = [a,b,c]
list3 = list1 + list2 = [1,2,3,a,b,c] - reverse(),翻转列表,赋值给自身
- 使用join()将一个list追加到另一个list上
list1 = [‘1’,‘2’,‘3’]
list2 = [‘a’,‘b’,‘c’]
list1.join(list2) = ‘1’,‘2’,‘3’,‘a’,‘b’,‘c’ #如果list没有引号(非string类型),报错- 也可这样使用
s1 = ‘,’.join(str(n) for n in L) # 用逗号连接list的元素(手动变成string) - 连接的列表或元组中元素的类型必须全部为string类型
- 也可这样使用
- 使用extend()追加多个值到另一个list上
list1.extend([a,b,c])
list1 = [1,2,3,a,b,c] - 使用*号,可以重复输出
print list1 * 2 # [1,2,3] [1,2,3] - 返回最大值和最小值
max(list) min(list) - 比较两个字符串
cmp(list1,list2)
比较两个list
返回1,-1,0
根据顺序依次比较,前面元素相同,则比较下一个 - list.count(obj)统计某个元素在列表中出现的次数
返回出现的字符串串个数 - list.find(obj) 从list查找子字符串
返回出现的索引位置
找不到返回-1
tuple元组
- 简介
与list类似
是不可变的有序表,不能二次赋值,相当于只读列表
一经初始化就不能再改变,比较安全
使用()标识 - 只有一个元素的元组
只有一个元素也需要加逗号,不然默认为数学计算意义上的括号 - 可变tuple
当tuple内嵌套list时,改变list的值可以间接改变tuple
dict和set
详见http://www.runoob.com/python/python-dictionary.html
dict字典
- 简介
- dict全称dictionary叫做字典,是python内置的
- 其他语言也称为map
- 使用键值对(key-value)存储
- 具有极快的查找速度
- 通过{}标识
d = {key:value,…} - dict内部存放的顺序和可以的放入顺序没有关系
- 把数据放入字典,除了初始化时指定外,还可以通过key存取
d[‘ni’] = 100
dict[key] = value - 一个key只能对应一个value,对同一个key重复放入会覆盖掉以前的value
- 避免key不存在的方法
- 通过in判断
‘key’ in 字典
返回True或Flase - 通过get()方法
字典.get(‘key’) 不存在返回none(python交互模式不展示)
字典.get(‘key’,-1) 不存在返回-1(可以指定返回值)
- 通过in判断
- 删除key用pop(key)方法
- 删除key,对应的value也会被删除
- dict和list的区别
- dict特点
dict的查找和插入速度快,不会随着key的增加而变慢
dict需要占用大量的内层,内存浪费多 - list特点
list查找和插入的时间随着元素的增加而增加
list占用空间小,浪费内存很少 - 所以dict是用空间换取时间的一种方法
- dict特点
- dict内部的key必须是不可变对象
- 因为dict是根据key计算value的存储位置(哈希算法计算),如果每次计算相同的key得到的结果不同,那dict内部就混乱了。
- python中的字符串、整数等都是不可变的可以正常使用dict
但是list可变,不能作为key(可以使用tuple元祖)
set组
- 简介
和dict类似,也是一组key的集合
但是不存储value
由于key不能重复,所以在set中,没有重复的key,重复元素会被过滤掉
set不是有序的 - 要创建一个set,需要提供一个list作为输入集合
s = set([…]) - 通过add(key)方法可以添加元素到set中,可以重复添加,但不会有效果
- 通过remove(key)方法可以删除元素
- set可以看成数学意义上的无序和无重复元素的集合,可以做交并集处理
>>> s1 = set([1, 2, 3])
>>> s2 = set([2, 3, 4])
>>> s1 & s2
{2, 3}
>>> s1 | s2
{1, 2, 3, 4} - dict和set的唯一区别在于set没有存储对应的value,但原理相同,所以,同样不可以放入可变对象,因为无法判断两个可变对象是否相等,所以无法保证set内部‘不会有重复元素’