2026/4/17 9:52:40
网站建设
项目流程
申请网站域名怎么做网站,租服务器发布网站,字体 安装到wordpress,电子商务网站首页设计02、Python 教程 - 列表和元组
在Python中#xff0c;最基本的数据结构为序列#xff08;包括列表、元组、字符串等#xff09;#xff08;sequence#xff09;列表是可以修改的#xff0c;而元组不可以Python支持一种数据结构的基本概念#xff0c;名为容器#xff08…02、Python 教程 - 列表和元组在Python中最基本的数据结构为序列包括列表、元组、字符串等sequence列表是可以修改的而元组不可以Python支持一种数据结构的基本概念名为容器container容器基本上就是可包含其他对象的对象两种主要的容器是序列如列表和元组和映射如字典在序列中每个元素都有编号而在映射中每个元素都有名称也叫键。有一种既不是序列也不是映射的容器它就是集合set通用的序列操作通用的序列操作包括索引、切片、相加、相乘和成员资格检查1索引索引中下标从0开始访问单个元素0时第一个元素的位置用负数索引时Python将从右即从最后一个元素开始往左数-1是最后一个元素的位置beyond I love the band beyond[0]#结果为I beyond[2]#结果为l beyond[-1]#结果为d beyond[-2]#结果为n beyond[2]#结果为y fourth input(Year: )[3] 输入结果Year: 1999 输出结果92切片:除使用索引来访问单个元素外还可使用切片slicing来访问特定范围内的元素简而言之左闭右开切片索引方向只能从左向右不能反过来操作即左小右大左闭右开****若要反过来操作需要指定步长即可number [0,1,2,3,4,5,6,7,8,9] number[1:3]#结果为[12] number[4:5]#结果为[4] number[8:10]#结果为[8,9] 索引10该元素压根不存在但是没有报错压根用不到左闭右开 number[-3:-1]#结果为[7,8] number[-1:-3]#结果为[] 如果第一个索引指定的元素位于第二个索引指定的元素后面 在这里倒数第3个元素位于第1个元素后面结果就为空序列 #切片结束于序列末尾可省略第二个索引 number[-3:]#结果为[7,8,9] #如果切片始于序列开头可省略第一个索引 number[:3]#结果为[0,1,2] #要复制整个序列可将两个索引都省略 number[:]#结果为[0,1,2,3,4,5,6,7,8,9]设置步长的切片通常情况不写步长的时候步长默认为1number[0,1,2,3,4,5,6,7,8,9] number[0:5]#结果为[0,1,2,3,4] number[0:5:1]#结果为[0,1,2,3,4] #不写第三个参数步长的话默认为1 number[0:10:2]#结果为[0,2,4,6,8] 步长为2时将从起点和终点之间每隔一个元素提取一个元素 #要从序列中每隔3个元素提取1个只需提供步长4即可 number[::4]#结果为[0,4,8] #当然步长不能为0否则无法向前移动但可以为负数即从右向左提取元素 number[8:3:-1]#结果为[8,7,6,5,4] number[3:8:-1]#结果为[] #步长为正数时它从起点移到终点 #步长为负数时它从终点移到起点 number[5::-2]#结果为[5,3,1] number[:5:-2]#结果为[9,7]3序列相加[1,2,3] [3,2,1]#结果为[1,2,3,3,2,1] hello, beyond#结果为hello,beyond [1,2,2] yanyu#结果为报错 #一般而言不能拼接不同类型的序列4乘法*“beyond” * 5#结果为beyondbeyondbeyondbeyondbeyond [521] * 3#结果为[521,521,521] Python中None表示什么都没有为空 将列表长度初始化为5如下 beyond [None] * 5 beyond#结果为[None,None,None,None,None]5成员资格in要检查特定的值可以是单个字符也可以是字符串是否包含在序列中可使用运算符in它检查是否满足指定的条件并返回相应的值满足时返回True不满足时返回False这样的运算符称为布尔运算符而前述真值称为布尔值beyond yanyu like beyond y in beyond#结果为True q in beyond#结果为False users [yanyu,huangjiaju,yeshirong] input(Enter your user name:) in users Enter your user name:yanyu #结果为True长度、最小值、最大值函数len返回序列包含的元素个数min和max分别返回序列中最小和最大的元素beyond [19,5,22] len(beyond)#结果为3 max(beyond)#结果为22 min(beyond)#结果为5 max(1999,2005)#结果为2005 min(98,55)#结果为55列表函数list使用字符串来创建列表可将任何序列而不仅仅是字符串作为list的参数list(beyond)#结果为[b, e, y, o, n, d]基本的列表操作包括索引、切片、拼接和相乘但列表的有趣之处在于它是可以修改的1修改列表给元素赋值beyond [1,2,3,4,5] beyond[1] 99 beyond#结果为[1,99,3,4,5] #不能给不存在的元素赋值因此如果列表的长度为2就不能给索引为100的元素赋值2删除元素delyanyu [yanyu,1999,huangjiaju] del yanyu[1] yanyu#结果为[yanyu,huangjiaju]3给切片赋值yanyu list(beyond) yanyu#结果为[b, e, y, o, n, d] yanyu[2:] list(SQ) yanyu#结果为[b,e,S,Q] yanyu[3:] list(jiaju) yanyu#结果为[b, e, S, j, i, a, j, u] 在不替换原有元素的情况下插入新元素 yanyu[1:1] [6,7,8] yanyu#结果为[b, 6, 7, 8, e, S, j, i, a, j, u] yanyu[1:3] [] yanyu#结果为[b, 8, e, S, j, i, a, j, u] 这很显然与del yanyu[1:3]等效 类推也可以对执行步长不为1的切片进行赋值 4列表方法方法是与对象列表、数、字符串等联系紧密的函数object.method(arguments)方法调用与函数调用很像只是在方法名前加上了对象和句点列表包含多个可用来查看或修改其内容的方法1append将一个对象附加到列表末尾yanyu [1,2,4,5,6] yanyu.append(7) yanyu#结果为[1,2,4,5,6,7]2clear就地清空列表的内容yanyu [1,2,3] yanyu.clear() yanyu#结果为[] #这类似于切片赋值语句yanyu[:] []3copy复制列表将另一个名称关联到列表a [1,2,3] b a b[1] 4 a#结果为[1,4,3] #将另一个名称关联到列表 a [1,2,3] b a.copy() b[1] 4 a#结果为[1, 2, 3] #这类似于使用a[:]或list(a)它们也都复制a4count计算指定的元素在列表中出现了多少次[to, be, or, not, to, be].count(to)结果为2 x [[1, 2], 1, 1, [2, 1, [1, 2]]] x.count(1)结果为2 x.count([1, 2])结果为15extend同时将多个值附加到列表末尾可使用一个列表来扩展另一个列表a [1, 2, 3] b [4, 5, 6] a.extend(b) a结果为[1, 2, 3, 4, 5, 6] #很明显a这个列表已经发生了修改 extend是将b扩展到aa会发生变化会被扩展 而常规拼接只是返回一个新的序列原本的不会被修改 a [1, 2, 3] b [4, 5, 6] a b结果为[1, 2, 3, 4, 5, 6] a结果为[1, 2, 3] #很明显a这个列表并没有改变 a ab#结果为[1, 2, 3, 4, 5, 6] 效果实现了 但是拼接的效率将比extend低 a [1, 2, 3] b [4, 5, 6] a[len(a):] b a结果为[1, 2, 3, 4, 5, 6] #这虽然可行但可读性不是很高6index查找指定值第一次出现的索引yanyu [We, are, the, knights, who, say, huangjiaju] yanyu.index(who)结果为4 who处于索引第4处 yanyu.index(xixihaha)#结果为报错 其不存在7insert用于将一个对象插入列表numbers [1, 2, 3, 5, 6, 7] numbers.insert(3, four) numbers结果为[1, 2, 3, four, 5, 6, 7] 与extend一样也可使用切片赋值来获得与insert一样的效果 这虽巧妙但可读性根本无法与使用insert媲美 numbers [1, 2, 3, 5, 6, 7] numbers[3:3] [four] numbers结果为[1, 2, 3, four, 5, 6, 7]8pop从列表中删除一个元素末尾为最后一个元素并返回这一元素pop是唯一既修改列表又返回一个非None值的列表方法x [1,2,3987] x.pop()#结果为7 x#结果为[1,2,3,9,8] x.pop(2)#结果为3 x#结果为[1,2,9,8] 使用pop可实现一种常见的数据结构——栈stack后进先出 push和pop是大家普遍接受的两种栈操作加入和取走的名称 Python没有提供push但可使用append来替代 方法pop和append的效果相反因此将刚弹出的值压入或附加后得到的栈将与原来相同 要创建先进先出FIFO的队列可使用insert(0, ...)代替append 另外也可继续使用append但用pop(0)替代pop()。 x [1,4,7] x.append(x.pop()) x#结果为[1,4,7]9remove用于删除第一个为指定值的元素remove是就地修改且不返回值的方法不同于pop的是它修改列表但不返回任何值x [I,love,beyond,and,I,hahaha] x.remove(I) x#结果为 x.remove(SQ)#结果为报错 原因为列表里面没有该元素10reverse按相反的顺序排列列表中的元素修改列表但不返回任何值与remove和sort等方法一样x [1, 2, 3] x.reverse() x结果为[3, 2, 1] 如果要按相反的顺序迭代序列可使用函数reversed 这个函数不返回列表而是返回一个迭代器不改变原来的列表 x [1, 2, 3] list(reversed(x))结果为[3, 2, 1] x#结果为[1,2,3]11sort用于对列表就地排序sort方法对原来的列表进行修改使其元素按顺序排列且不返回任何值sorted函数可用于任何序列但总是返回一个列表x [7,4,1,8,9,6,5,2,3] x.sort() x#结果为[1,2,3,4,5,6,7,8,9] y [9,5,1,7,8,6] z y.sort() print(z)#结果为None 其原因在于sort不返回任何值 y#结果为[1,5,6,7,8,9] y列表排序了但是sort不返回任何值导致z为None #先将z关联到y的副本再对z进行排序 y [9,5,1,7,8,6] z y.copy() z.sort() z#结果为[1, 5, 6, 7, 8, 9] z进行排序 y#结果为[9, 5, 1, 7, 8, 6] y并未修改 #另一种方式是使用函数sorted x [4, 6, 2, 1, 7, 9] y sorted(x) y结果为[1, 2, 4, 6, 7, 9] x结果为[4, 6, 2, 1, 7, 9] #如果要将元素按相反的顺序排列可先使用sort或sorted再调用方法reverse也可使用参数reverse sorted(Python)结果为[P, h, n, o, t, y] 大写字母小写字母相同类型字母a或A最小12高级排序方法sort接受两个可选参数关键字参数key和reverse参数key类似于参数cmp你将其设置为一个用于排序的函数参数reverse只需将其指定为一个真值True或False以指出是否要按相反的顺序对列表进行排序要根据长度对元素进行排序可将参数key设置为函数lenx [qwert,asf,zx,vxcb,sdfsd] x.sort(keylen) x#结果为[zx, asf, vxcb, qwert, sdfsd] y [4,6,8,2,1,9,7] y.sort(reverseTrue) y#结果为[9, 8, 7, 6, 4, 2, 1]元组不可修改的序列()元组语法很简单只要将一些值用逗号分隔就能自动创建一个元组1,2,3#结果为(1, 2, 3) 元组 (1,2,3)#结果为(1, 2, 3) 元组 #逗号很关键若只有一个数时不加逗号就代表数加上逗号代表元组 1999#结果为1999 数 1999,#结果为(1999,) 元组 (1999,)#结果为(1999,) 元组函数tuple的工作原理与list很像它将一个序列作为参数并将其转换为元组如果参数已经是元组就原封不动地返回它tuple([1, 2, 3])#结果为(1, 2, 3) tuple(abc)#结果为(a, b, c) tuple((1, 2, 3))#结果为(1, 2, 3)元组的创建及其元素的访问方式与其他序列相同x 1, 2, 3 x#结果为(1,2,3) x[1]#结果为2 x[0:2]结果为(1, 2)本章节介绍的新函数函 数描 述len(seq)返回序列的长度list(seq)将序列转换为列表max(args)返回序列或一组参数中的最大值min(args)返回序列和一组参数中的最小值reversed(seq)让你能够反向迭代序列sorted(seq)返回一个有序列表其中包含指定序列中的所有元素tuple(seq)将序列转换为元组