继续浏览精彩内容
慕课网APP
程序员的梦工厂
打开
继续
感谢您的支持,我会继续努力的
赞赏金额会直接到老师账户
将二维码发送给自己后长按识别
微信支付
支付宝支付

python入门:列表和元组

不要慕码人我要切诺基
关注TA
已关注
手记 281
粉丝 37
获赞 120

列表与元组的主要不同在于,列表是可以修改的,元组不可以。列表适用于需要中途添加元素的情形,元组适用于出于某种考虑禁止修改序列的情形。在需要处理一系列值时,序列很有用,在数据库中,你可能使用序列来表示人,其中第一个表示姓名,第二个表示年龄。用列表表示如下:

1user=['Andy',20]

序列还可包含其他序列


user=['Andy',20]use=['john',21]database=[user,usr]database[['Andy'20], ['john'21]]data=['Aurora',user]data['Aurora', ['Andy'20]]

有几种操作使用于所有序列,包括索引、切片、相加、相乘和成员检查。另外还有一些内置函数,可用于确定序列的长度以及找出序列中最大和最小的元素。

索引:

序列中所有的元素都有编号-从0开始递增

1234set='Hello'set[0]'H'字符串就是由字符组成的序列,索引0指向第一个元素,这里为字母H,不同于其他一些语言,python没有表示字符的类型。因此一个字符就是只包含一个元素的字符串。

这称为索引,还可使用负索引来获取元素

12set[-1]'o'

对于字符串字面量(以及其他序列字面量)可直接对其执行索引操作,无需先将其赋给变量,这与先赋给变量在对变量执行索引操作的效果一样。

12'Hello'[1]'e'

如果函数调用返回一个序列,可直接对其执行索引操作。例如,你只想获取用户输入的姓名第二位:


name=input('name: ')[2]name: johnname'h'

切片:

使用索引来访问单个元素外,还可使用切片来访问特定范围内的元素,使用两个索引用冒号分隔:


tag='<a href="How long have you been studying python">python web site</a>'tag[9:30]'How long have you bee'tag[49:-4]'python web site'

切片适用于提取序列一部分,其中的编号非常重要,第一个索引是包含第一个元素的编号,第二个索引是切片后前一位的元素编号(下标从0开始)


number=[1,2,3,4,5,6,7,8,9,10]number[3:6][456]

两个索引来指定切片的边界,其中一个索引指定的元素包含在切片内,第二个索引指定的元素不包含在切片内。

简写:


# 如果切片结束与序列末尾,可省略第二个索引:number[-3:][8,9,10]# 如果切片始于序列开头,可省略第一个索引:number[:3][1,2,3]# 复制序列number[:][12345678910]

步长:

执行切片操作时,显示或隐示地制定起点和终点,但通常省略另一个参数,即步长。在普通切片中,步长为1(从一个元素移动到下一个元素),切片包含起点和终点之间的所有元素。

1234number[0:10:1][12345678910]number[0:10:2][13579]

也可以简写:

12number[::4][159]

步长不能为0,但是可以是负数,这样获取元素的位置是从右向左。

12number[::-2][108642]

步长为正数时,它从起点移到终点,步长为负数时,它从终点移到起点。

序列相加:


[1,2,3]+[4,5,6][123456][1,2,3]+'world'Traceback (most recent call last):  File "<pyshell#12>", line 1in <module>    [1,2,3]+'world'TypeError: can only concatenate list (not "str") to list

不能拼接序列与字符串,虽然他们都是序列,一般不能拼接不同类型的序列。

乘法:


'hello' * 2'hellohello'[2* 3[222]

如先定义序列但并不为其赋值可用


name=[None*  5name[NoneNoneNoneNoneNone]

成员资格:

检查特定的值是否包含在序列中,使用in.满足条件返回true,否则返回false.


name='Andy''A' in nameTrue# 对于字符串来说只有它包含的字符才是其成员或元素。'p' in 'python'True

长度、最小值、最大值


number=[100,20,80]len(number)3max(number)100min(number)20max(2,3,7)7

列表常用方法


#赋值x = [1,2,1]x[1]= 3x[1, 3, 1]# 删除元素x = [1,3,1]del x[1]x[1, 1]# 给切片赋值name=list('Perl')name['P''e''r''l']name[3:]=list('ar')name['P''e''r''a''r']# 还可以在不删除原有元素的情况下插入新元素name[1:1]=list('el')name['P''r''l''e''r''a''r']del name[1::2]name['P''l''r''r']

方法是与对象(列表、数、字符串等)联系紧密的函数。


# 在末尾追加元素:appendnumber.append(4)number[1, 2, 3, 4]# 清空列表:clearnumber.clear()number[]# 复制:copya  = [1,2,3] b = ab[1]=4b[1, 4, 3]a[1, 4, 3] a = [1,4,3]b=a.copy()b[1]=5a[1, 4, 3]# 计数:count['to','be','or','not','to','be'].count('to')2x=[[1,2],1,2,[1,2,[2,1]]]x.count(1)1# 扩展追加exenda =[1,2,3]b= [4,5,6]a.extend(b)a[1, 2, 3, 4, 5, 6]b[4,5,6] a+b[1, 2, 3, 4, 5, 6, 4, 5, 6]a[1, 2, 3, 4, 5, 6]b[4, 5, 6] # 查找第一次在序列中出现的索引a =['to','be','or','not','to','be']a.index('be')1a[1]'be'# inster:插入number = [1,2,3,4,5]number.insert(2,8)number[1, 2, 8, 3, 4, 5]# pop删除末尾最后一个元素并返回删除元素,pop是唯一既修改列表又返回一个非none值的列表方法。number.pop()5number[1, 2, 8, 3, 4] number.insert(0,number.pop(0)) # 删除第一个指定值的元素a =['to','be','or','not','to','be']a.remove('to')a['be''or''not''to''be']# 倒序排列:reversenumber = [2,8,3,4]number.reverse()number[4, 3, 8, 2]# 对列表就地排序指对原表进行修改:sortnumber = [4,3,8,2]number.sort()number[2, 3, 4, 8]


元组:不可修改的序列

元组的几种写法。


(1,2,3) 1,2,3 (2,) 2,

3 * (20+2)663* (20+2,)(22, 22, 22)(22)与22完全等效,加上逗号,就能完全改变表达式的值

函数tuple的工作原理与list很像,它将一个序列作为参数,并将其转换为元组。如果参数是元组,就原封不动的返回。


tuple([1,2,3])(1,2,3)tuple('abc')('a','b','c')tuple((1,2,3))(1,2,3)x = 1,2,3x[1]2x[0:2](1,2)



打开App,阅读手记
0人推荐
发表评论
随时随地看视频慕课网APP