定义
list: 链表, 有序的项目, 通过索引进行查找, 使用方括号”[]”;
tuple:元组, 元组将多样的对象集合到一起, 不能修改, 通过索引进行查找, 使用括号”()”;
dict:字典, 字典是一组键(key)和值(value)的组合, 通过键(key)进行查找, 没有顺序, 使用大括号”{}”;
set:集合,无序, 元素只出现一次, 自动去重, 使用”set([])”;
list
创建
直接赢[]括起来就创建了一个了list对象。list对象里面的数据类型没有要求。为空则为空list。
用range()生成:
L_1 = range(1,10)
L_2 = range(1,10,2)
print L_1
print L_2
ps: range()不包括最后一个元素
# -*- coding: utf-8 -*-
L = [1 ,2 ,5 ,7 ,3 ,6 ]
# 0 1 2 3 4 5
# -6 -5 -4 -3 -2 -1
print L[0:3] #从0到3的元素
print L[3:] #3之后的元素
print L[-1:] #-1之前的元素
print L[::2] #每隔2取一个元素
print L[::3] #每隔3取一个元素
print L[::-1] #倒着每隔1取一个元素,也就是倒置
如果中文字符串在Python环境下遇到 UnicodeDecodeError,这是因为.py文件保存的格式有问题。可以在第一行添加注释
# -*- coding: utf-8 -*-
目的是告诉Python解释器,用UTF-8编码读取源代码。然后用Notepad++ 另存为… 并选择UTF-8格式保存。
索引
索引从 0 开始,也就是说,第一个元素的索引是0,第二个元素的索引是1。
也可以用 -1 这个索引来表示最后一个元素,倒数第二用 -2 表示,倒数第三用 -3 表示,倒数第四用 -4 表示。
L = ['A','B','C','D'];
print L[0]
print L[1]
print L[2]
print L[3]
print L[-1]
print L[-2]
print L[-3]
list.append(要添加的元素),在尾部追加。
list.sret(位置,要添加的元素),指定位置插入
L = ['A','B','C','D'];
print L
L.append('E');
print L
L.insert(0,'W')
print L
要删除指定位置的元素,用pop(i)方法,其中i是索引位置。如果为空,删除末尾。
L_1 = ['A','B','C','D'];
print L_1
L_1.pop(1)
print L_1
L_2 = ['A','B','C','D']
print L_2
L_2.pop()
print L_2
替代则直接对要替代的元素赋值
L = [1,2,3,4]
print L
L[1] = 3
print L
这几种类型都能用len()求长度。
tuple
创建tuple和创建list唯一不同之处是用( )替代了[ ]。
tuple创建后不能改变了,tuple没有 append()方法,也没有insert()和pop()方法。
单元素tuple
T_1 = (1)
print T_1
T_2 = (1,)
print T_2
因为()既可以表示tuple,又可以作为括号表示运算时的优先级,结果 (1) 被Python解释器计算出结果 1,导致我们得到的不是tuple,而是整数 1。
正是因为用()定义单元素的tuple有歧义,所以 Python 规定,单元素 tuple 要多加一个逗号“,”
dict
dict是通过 key 来查找 value。
花括号 {} 表示这是一个dict,然后按照 key: value, 写出来即可。最后一个 key: value 的逗号可以省略。
D = {
'A':1,
'B':2,
'C':3
}
print D['A']
print D['D']
通过 key 访问 dict 的value,只要 key 存在,dict就返回对应的value。如果key不存在,会直接报错:KeyError。
D = {
'A':1,
'B':2,
'C':3
}
print D.get('A')
print D.get('D')
dict本身提供的一个 get 方法,在Key不存在的时候,返回None
使用for循环遍历:
D = {
'A':1,
'B':2,
'C':3
}
for x in D:
print x,D[x]
> for循环: for 变量 in 结构
dict的特点
1.查找速度快,无论dict有10个元素还是10万个元素,查找速度都一样.dict的缺点是占用内存大,还会浪费很多内容
2.存储的key-value序对是没有顺序的
3.作为 key 的元素必须不可变
set
set 持有一系列元素,但是set的元素没有重复,而且是无序的
set的特点
1.set的内部结构和dict很像,唯一区别是不存储value
2.set存储的元素和dict的key类似,必须是不变对象
3.set存储的元素也是没有顺序的
set的内部结构和dict很像,唯一区别是不存储value
S = set([1,2,3,4,5,6])
print S
S.add(7)
print S
S.remove(4)
print S
遍历使用for循环
应用场景
list, 简单的数据集合, 可以使用索引;
tuple, 把一些数据当做一个整体去使用, 不能修改;
dict, 使用键值和值进行关联的数据;
set, 数据只出现一次, 只关心数据是否出现, 不关心其位置;