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

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

上一篇文章介绍了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 a
True
>>> 4 in a
False
>>> 1 not in a
False
>>> 4 not in a
True


以上就是列表的内容,了解了列表,元祖就相当简单了,元祖就是只读的列表,不能对其进行修改,只能获取值,只要记住这一点就足够了,元祖用()扩住,逗号分隔,如(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()方法;集合不能有重复元素,所以集合不能进行复制,总之,记住集合无序且不能有重复,所以列表中与顺序和重复有关的操作,集合都是不合法的。


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值