Python入门之数据结构

Python入门之数据结构
最新回答
茵沫

2026-01-10 22:35:44

Python有四个基本的数据结构:列表(list)、元组(tuple)、集合(set)、字典(dict)。其中列表和元组都是有序的,可通过索引访问,区别在于元组是常量,不可修改,而列表是变量,可修改。集合和字典都是无序的,其中字典是键-值形式存在。

1、列表(list)

列表最基本格式:list=[0,1,2,3,4,5,6,7,8,9]。Python中list已经内置了一些基本方法。

  • 列表的内置方法:

    list.index(i):返回第一个元素i的索引。

    list.count(i):返回元素i出现的次数。

    list.append(i):列表最后添加元素i。

    list.pop([index]):默认移除最后一个元素,并返回该元素。如果给定索引index,移除该元素,并返回该元素。

    list.remove(i):删除第一个元素i。

    list.sort():排序。

    list.reverse():列表倒置。

    list.copy():复制,等于list[:]。

    list.extend(list2):扩展,即等于list+list2。

    list.insert(index,i):在index位置插入元素i。

    list.clear():移除列表所有项,list=[]。

  • 列表有一些基本操作:

    索引:

    索引正数和负数表示方向,正数即从左往右,索引从0到len(list)-1;负数即从右往左,索引从-len(list)到-1。意义上的大小。如list[-1]=list[9]=9。

    切片:

    格式list[start:stop:step],如list[1:4:1]=[1,2,3]。start是从这个索引开始,stop是到这个元素结束,且不包括这个元素。step也是步长,默认为1。以List[8:-1:1]为例,切片start为list[8]=8,stop为list[-1]=9,不包含,step=1,因此List[8:-1:1]=[8]。另外,值得一提的是step也可以是负数。

    Step负数表示的是逆向列表,切片时从右往左取元素。比如,list[1::-1]=[1,0],list[1]=1,然后从右往左,没有stop参数,取值到最左边,因此是[1,0]。再举一个例子。list[3:1:-1]。list[3]=3,list[1]=1,从右往左取值,不包含stop的值,所以是[3,2]。

    切片是列表非常重要的操作,理解切片有两个要点:1、start和stop参数正负表示的是方向。1表示正向(从左往右)的第一个元素,-1表示逆向(从右往左)的第一个元素。2、step参数正负数表示方向,正数从左到右取元素,start<stop才能取到元素;负数表示从右到左取元素,start>stop,才能取到元素。3、切片实际是定义[start,stop)集合和list索引集合的交际,因此,如果没有交集,返回的是空列表,而不会报错。

    例子源码:

    list = [0,1,2,3,4,5,6,7,78,9]print(list[3:1:-1])print(list[1::-1])输出[3, 2][1, 0]

    列表加法和乘法:

    列表相加,则第二个list所有元素依次添加到第一个list最后面,形成新的list如list1=[1,2],list2=[3,4],则list1+list2=[1,2,3,4]。

    列表乘法,是指nlist。则list元素重复n次,形成新的list。如list1=[1,2],则3list1=[1,2,1,2,1,2]。

    例子源码:

    list1 = [1,2]list2 = [3,4]print(list1+list2)print(3*list1)输出:[1, 2, 3, 4][1, 2, 1, 2, 1, 2]

2、元组(tuple)

元组最基本格式:list=(0,1,2,3,4,5,6,7,8,9)。元组与列表是类似的,但是元组中的元素是不可修改的。

  • 元组和列表有一些类似的函数:

    len(tuple/list):元组/列表长度。

    cmp(tuple1/list1,tuple2/list2):比较两个元组/列表,python3已经无此函数,替代函数:operator.eq。

    max(tuple/list):元组/列表最大值。

    min(tuple/list):元组/列表最小值。

另外,可以使用del删除整个元组和列表。

3、字典(dict)

字典基本格式:dict={key:value}。字典是以键-值对形式存在,没有顺序。

  • 字典内置函数:

    cmp(dict1,dict2):比较两个字典元素大小, python3已经无此函数,替代函数:operator.eq。

    len(dict):字典长度。

  • 字典的操作:

    dict.items():返回字典键值对列表:[(key,value),(key,value),…]。

    dict.keys():返回字典键的列表:[key,key,…]。

    dict.has_key(key):判断字典中是否有key这个键。

    dict.get(key):获取指定键的值。

    dict.values():返回值的列表:[value,value,…]。

4、集合(set)

集合基本形式:{value,…},集合也是无序的。

  • 集合的操作:

    set.add(value):添加一个元素,set.update(value)也可以添加元素,且value可以是列表、元组、字典、集合等。

    set.remove(value):移除一个元素。set.discard(value),也可以移除一个元素,两者区别是,remove移除的value若在集合中不存在,则会报KeyError错误。而discard方法不会。

    并集:set(set1|set2)。

    交集:set(set1&set2)。

例子源码:

set1 = {1,2,3}set2 = {3,4,5}set1.add(1)set1.update([7,8])set2.discard(6)set2.remove(4)print(set1)print(set2)print(set(set1|set2))print(set(set1&set2))输出:{1, 2, 3, 7, 8}{3, 5}{1, 2, 3, 5, 7, 8}{3}

Python基本的数据结构,很多教程里也有讲解,这里总结了一下,对于零基础入门的小白已经够用了。