list
列表,是一种有序的集合,可以随时添加和修改元素,元素可以是任意类型。
定义方式有两种,直接赋值或使用list类的构造方法:
li1 = ["aaa",111,True,[1]] 或:
li2 = list([["aaa",111,True,[1]]]) 注:list()方法里传入的参数是一个序列,不一定需要是list的数据,list,tuple,dict,set类型的数据都可以看作是一个序列
使用索引,可以访问list中的每一个元素,索引从0开始,如:
>>>li1(0)
'aaa'
>>>li1(1)
111
索引使用负号,可以从list的最后一位开始访问,如:
>>>li1(-1)
[1]
>>>li1(-2)
True
当索引超出范围时,python会报IndexError的错
同时也可以通过索引的方式来直接修改list中的元素,如:
>>> li1[2] = False
>>>li1
['aaa', 111, False, [1]]
list的基本方法:
len():返回list的长度
append():在list的末尾追加元素
pop():根据索引删除元素(默认为最后一个元素),返回对应位置的元素
remove():根据元素进行删除,存在多个相同的元素时,一次只删除第一个,要删除的元素不存在时,报错
insert(1,'a'):指定位置插入元素,指定位置后的元素索引向后移一位
index():返回对应元素的下标,有多个返回第一个,找不到就报错
clear():清空list
list的基本方法就如上,其他方法请使用help(list)查看
特别注意list也可以认为是一个布尔值,当list为空时,表示False,否则为True
使用for循环可以遍历list:
for i in li1:
print(i)
tuple
元组,可以理解为不可变的list,除了不可修改外,其他性质与list一致
定义方式同样是直接赋值或使用tuple的构造方法,赋值时用()表示tuple:
tu1 = (1,2,3,4,5) 或:
tu2 = tuple([1,2,3,4,5]) 传入的也是一个序列,所以tuple和list之间可以使用构造方法随意转换
值得注意的是,使用直接赋值时,如果只有一个元素,python会默认将“()”看做是小括号,所以获得的是元素本身而不是tuple类型,如:
>>>tu1 = ("aaa")
aaa
可以在元素的后面加个“,”来区分,如:tu1 = ("aaa",),建议定义tuple和list时都在最后加上一个“,”
特别注意一下一种情况
a = [1,2]
tu = (a,2,3)
print(tu)
a[1] = 1
print(tu)
([1, 2], 2, 3)
([1, 1], 2, 3)
当元组中储存的是如变量这种指向对象的元素时,元组储存的是指向,当指向的内容改变时,元组也会相应变化
dict
字典:同java中的集合,以键值对的形式储存数据,其中key必须唯一不可重复,这种类型具有极快的查找速度
第一方式如下:
dic1 = {"aaa":111,"bbb":222,} 或
dic2 = dict({"aaa":111,"bbb":222,}) 传入的是键值对形式的数据,所以list和tuple不能转换成dict,但是dict可以转换成list和tuple,只保留key值
dict可以用key访问对应的元素,如:
>>>dic1["aaa"]
111
也可以用来修改对应元素
>>>dic1["aaa"] = 11
基本方法:
get("aaa"):用key获取对应的元素,同dic1["aaa"],如果key不存在返回None而dic1["aaa"] 会报错
setdefault("aaa",11):修改对应的元素,同dic1["aaa"]=11
update():传入一个新的字典,将新字典的数据,添加到字典中出,key重复就修改,不重复就添加
pop():方法,根据key删除数据,如果不写入key,会报错
popitems():删除最后一个键值对
items():获取所有的键值对
keys():获取所有的key值
values():获取所有的values
clear():清空
注意一点,dic的key必须是不可变数据,所以list不能做为key,同时,包含list数据的tuple也不能做为key,但是没有可变数据的tuple,可以做为key
set
与dict类似,但只储存key,可以理解为元素唯一且无序的集合,不能储存list类型,与dict的key一样
定义方式如下:
s1 = {["a","b",1,1} 或:
s2 = set(["a","b",1,1]) 传入的是一个序列,可以与list,tuple相互转换,dict可以用这种方式转换成set,只保留key
定义时可以有重复的数据,但是会自动过滤重复的元素
基本方法:
difference():返回传入的set中不包含的元素
difference_update():修改变量的值,修改为difference()返回的值
add():添加一个元素,如果重复就过滤
pop():删除set中的一个值,并返回它
remove():删除指定的值
clear():清空
update():与dict的一致。