首页 > 编程 > Python > 正文

Python笔记之列表,元祖和集合

2019-11-06 07:51:18
字体:
来源:转载
供稿:网友

辛苦堆砌,转载请注明出处,谢谢!

上一篇文章介绍了Python的基本数据类型和控制流,本篇开始,说说Python更复杂的数据类型,不过这里的复杂是指其具有一定的结构,并不是说这些数据类型真的很难,实际上还是很简单的,主要包括列表,元祖,集合和字典。基于这些数据类型,我们可以有效地组织数据,并进行灵活的处理。

先来看看我们的列表。

什么是列表?

列表是用[]括起来,用,分割的一系列数据,如

[1, True, 'abc', [2, False, 'def']]

可以看到,列表并不要求其内放置相同类型的数据,但是我们在实际使用中,一般都会放置相同类型的数据,以便于我们进行处理。如

[1, 2, 3]或者['abc', 'def']

如何对列表取值或修改?

(1) 获取列表长度

使用len()全局方法,len()方法还可以用来测量字符串,元祖以及字典的长度

>>> len([1,2,3])3

(2)列表下标操作

我们可以使用下标对列表进行操作,列表第一个元素的下标为0,第二个为1,以此类推,也可以使用负数,-1代表倒数第一个元素,-2代表倒是第二个元素,以此类推。

我们下面的例子假设都使用列表[1,2,3]进行,赋值给变量a,利用下标读取值:

>>> a[1]2

>>> a[-3]1

修改对应下标处的值(后续修改操作后记得执行a=[1,2,3],将a变量还原)

>>> a[1]=4>>> a[1, 4, 3]

删除对应下标处的元素,使用del语句

>>> del a[1]>>> a[1, 3]

通过下标截取子列表,使用start_index:end_index作为下标作用于列表即可,注意,取得的子列表不包括end_index对应的元素,也就是子列表区间为[start_index, end_index),另外,我们可以省略start_index,表示从0开始,省略end_index,表示到达列表末尾

>>> a[1:3][2, 3]

>>> a[:2][1, 2]

>>> a[1:][2, 3]

>>> a[:][1, 2, 3]

>>> a[-2:][2, 3]

执行截取子列表操作之后,看看a的值

>>> a[1, 2, 3]

a并没有被改变,而是生成了新的子列表,千万注意。

(3)列表的连接

>>> a=[1,2,3]>>> b=[4,5,6]>>> a+b[1, 2, 3, 4, 5, 6]

(4) 列表的复制

>>> a*3[1, 2, 3, 1, 2, 3, 1, 2, 3]

(5)列表的常用方法

看到这里,熟悉面向对象的人应该能够想到,如果列表有方法,那么列表实际上是一种Python的类,的确如此

>>> a.__class__<class 'list'>

我们先不去关注Python面向对象编程的部分,毕竟不面向对象的Python已经能够解决我们的很多问题了。我们只是去看看list,也就是列表类,有哪些常用的操作。由于这些list类的方法,会直接改变列表的内容。在IDLE输入help(list)可以输出list类的手册,可以更深入的了解列表的方法。先执行

>>> a=[1,2,3]

(a) 查找对应值的下标值

>>> a.index(2)1

如果值不存在,Python会抛出错误ValueError

>>> a.index(4)Traceback (most recent call last):  File "<pyshell#35>", line 1, in <module>    a.index(4)ValueError: 4 is not in list

(b)列表尾添加值

>>> a.append(4)>>> a[1, 2, 3, 4]

(c)列表插入值

>>> a.insert(1, 4)>>> a[1, 4, 2, 3]

insert方法的第一个参数是要插入的下标位置,第二个参数是要插入的值。

(d)删除值

>>> a[1, 4, 2, 3]>>> a.remove(4)>>> a[1, 2, 3]

这里注意和前面del区分,del再知道下标时很好用,删除对应下标的值,remove则处理知道值但不知道下标的情况。

如果删除不存在的值,会报错

>>> a.remove(4)Traceback (most recent call last):  File "<pyshell#44>", line 1, in <module>    a.remove(4)ValueError: list.remove(x): x not in list

如果列表有重复值,删除会怎样?

>>> a=[1,2,3,4,3]>>> a.remove(3)>>> a[1, 2, 4, 3]

删除了第一个匹配的元素

(e)排序

>>> a=[2,3,1,7]>>> a.sort()>>> a[1, 2, 3, 7]

(6)列表的使用

(a) 用于循环,可以使用in遍历a中的所有元素

>>> a=[1,2,3]

>>> for b in a:    PRint(b, end=' ')

输出1 2 3

(b) 多重赋值

如果我们想把列表中的值分别赋值给多个变量,我们没必要这样

>>> a[1, 2, 3]>>> b=a[0]>>> c=a[1]>>> d=a[2]

只需要一条语句即可

>>> b,c,d=a

(c) 判断某个值是否在列表中,用in和not in进行操作

>>> 1 in aTrue>>> 4 in aFalse>>> 1 not in aFalse>>> 4 not in aTrue

以上就是列表的内容,了解了列表,元祖就相当简单了,元祖就是只读的列表,不能对其进行修改,只能获取值,只要记住这一点就足够了,元祖用()扩住,逗号分隔,如(1,2,3),但是如果元祖只有一个值,一定写成(1,),后面加一个逗号,否则,Python会认为1是用括号扩住的常数1。列表和元祖之间可以相互转换

>>> a[1, 2, 3]

>>> tuple(a)(1, 2, 3)>>> list(a)[1, 2, 3]

最后再来了解一下set,也就是集合,集合和列表类似,可以修改,也可以添加元素,差别在于,列表是一个有序的双向队列,集合无序;列表可以保存重复的元素,而集合不行,如果有重复元素,集合只会保留一个。集合是用{}括起来,用逗号分隔的单个值,这里记住是单个值,以方便和后面的字典区分。如{1,2,3}

元祖,列表和集合三者可以相互转换,因为他们都是一维的数据结构

>>> a[1, 2, 3]>>> tuple(a)(1, 2, 3)>>> set(a){1, 2, 3}>>> list(a)[1, 2, 3]

集合类的可操作方法不多,可以help(set)查看,另外,由于集合无序,所以不能使用下标进行索引,也没有sort()方法;集合不能有重复元素,所以集合不能进行复制,总之,记住集合无序且不能有重复,所以列表中与顺序和重复有关的操作,集合都是不合法的。


发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表