python之列表与字典

心已入冬 提交于 2020-03-22 15:52:46

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] = 1print(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的一致。

 

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!