python(一)列表与元组——列表

来源:互联网 发布:淘宝排除王 编辑:程序博客网 时间:2024/06/04 19:52

1:list函数
功能:根据字符串(也可以是所有类型的序列)创建列表。

>>> list('zhaoliying')['z', 'h', 'a', 'o', 'l', 'i', 'y', 'i', 'n', 'g']

2:基本列表操作:元素赋值,元素删除,分片赋值
2.1:元素赋值(用索引标记为元素赋值)

>>> idol = ['zhaoliying','vs','wuenda']>>> idol[1] = '?'>>> idol['zhaoliying', '?', 'wuenda']

2.2:删除元素(del)

>>> idol = ['zhaoliying','keer','wuenda','myhuba','shagua']>>> del idol[4]>>> idol['zhaoliying', 'keer', 'wuenda', 'myhuba']

2.3:分片赋值
这个就厉害了,不信你看

>>> idol = list('zhaoliying')>>> idol[10:] = list('xihuanni')>>> idol['z', 'h', 'a', 'o', 'l', 'i', 'y', 'i', 'n', 'g', 'x', 'i', 'h', 'u', 'a', 'n', 'n', 'i']

即:使用分片赋值,可以使用与原序列不等长的序列将分片替换。

>>> hua =['I','YOU']>>> hua[1:1] = ['LOVE']>>> hua['I', 'LOVE', 'YOU']>>> shu = [2,8]>>> shu[1:1] = [4,6,7]>>> shu[2, 4, 6, 7, 8]

即:分片赋值语句可以在不需要替换任何原有元素的情况下插入新的元素

>>> shu = [2,4,6,7,8]>>> shu[:4] = []>>> shu[8]

即:分片赋值也可以删除元素
3:列表方法
方法调用格式:对象.方法 (参数) 类似于函数调用
3.1:append 功能:在列表末尾追加新的对象

>>> shu = [2,4,6,7,8]>>> shu.append('shuyazi')>>> shu[2, 4, 6, 7, 8, 'shuyazi']

3.2:count 功能:统计某个元素在列表中出现的次数

>>> wen =['you','know','that','I','know','you','donnot','know','whther','he','know']>>> wen.count('know')4>>> shu = [[1,1],[1,[1,1]],1,1,1,[1,1,1,[1,1]]]>>> shu.count(1)3>>> shu.count([1,1])1

3.3:extend 功能:用新列表扩展原有的列表

>>> idol = ['zhaoliying']>>> biaobai = ['love you']>>> idol.extend(biaobai)>>> idol['zhaoliying', 'love you']>>> idol = ['zhaoliying']>>> biaobai = ['love you']>>> idol + biaobai['zhaoliying', 'love you']>>> idol['zhaoliying']

注:效果上extend看起来很像连接操作,但是extend相当于修改了原始列表,而连接操作并没有修改原始列表。
3.4:index 功能:找出列表中某个值第一个匹配项的索引位置

>>> idol = ['mengmengda','liying','baozi','yingbao']>>> idol.index('liying')1

3.5:insert 功能:将对象插入到列表中

>>> shu = [2,4,6,7,8]>>> shu.insert (5,'shuyazi')>>> shu[2, 4, 6, 7, 8, 'shuyazi']

3.6:pop 功能:移除列表中的一个元素(默认是最后一个),并且返回该元素的值。

>>> shu = [2,4,6,7,8]>>> shu.pop()8>>> shu[2, 4, 6, 7]>>> key = [1,0,7,6]>>> key.pop(1)0>>> key[1, 7, 6]

注:Python中的列表pop方法即出栈,Python没有入栈方法,但可以使用append方法来代替。pop和append方法的操作结果恰好相反,如果入栈(或者追加)刚刚出栈的值,最后得到的结果还是原来的栈。

>>> shu = [2,4,6,7,8]>>> shu.append(shu.pop())>>> shu[2, 4, 6, 7, 8]

3.7:remove 功能:移除列表中某个值的第一个匹配项。

>>> wen = ['you','know','that','I','know','you','donnot','know']>>> wen.remove('you')>>> wen['know', 'that', 'I', 'know', 'you', 'donnot', 'know']

3.8:reverse 功能:将列表中的元素反向存放。

>>> lover = ['an','you fool']>>> lover.reverse()>>> lover['you fool', 'an']

3.9:sort 功能:在原位置对列表进行排序,根据python的默认排序规则按升序排列元素(改变原来的列表)

>>> anniversary = [2017,5,28,23.43,5,29,5.54]>>> anniversary.sort()>>> anniversary[5, 5, 5.54, 23.43, 28, 29, 2017]

那么,怎样得到排好序的列表同时保留原有列表呢?
想法1:

>>> anniversary = [2017,5,28,23.43,5,29,5.54]>>> y = anniversary.sort()>>> print yNone

即:sort修改了原有的列表,但是返回了空值。想法1 :错误
想法2:

>>> anniversary = [2017,5,28,23.43,5,29,5.54]>>> y = anniversary[:]>>> y.sort()    >>> anniversary[2017, 5, 28, 23.43, 5, 29, 5.54]>>> y[5, 5, 5.54, 23.43, 28, 29, 2017]

即:把anniversary的副本赋值给y,然后对y排序。 想法2:正确
想法3:

>>> anniversary = [2017,5,28,23.43,5,29,5.54]>>> y = anniversary>>> y.sort()>>> anniversary[5, 5, 5.54, 23.43, 28, 29, 2017]>>> y[5, 5, 5.54, 23.43, 28, 29, 2017]

即:简单把anniversary赋值给y是没有用的,这样两个指向同一个列表。
y = anniversary[:] vs y = anniversary 想法3:错误
想法4:

>>> anniversary = [2017,5,28,23.43,5,29,5.54]>>> y = sorted(anniversary)>>> anniversary[2017, 5, 28, 23.43, 5, 29, 5.54]>>> y[5, 5, 5.54, 23.43, 28, 29, 2017]

新技能get–>sorted函数,顾名思义,排序,这个函数适用于任何序列,却总是返回一个列表。

>>> sorted('lovehuba')['a', 'b', 'e', 'h', 'l', 'o', 'u', 'v']

3.10:高级排序(按照特定方式排序)
敲黑板:compare(x,y)比较函数:x>y时返回正数,x

>>> cmp(25,23)1>>> cmp(23,25)-1>>> cmp(92,92)0
>>> an = [5,28,5,29]>>> an.sort()>>> an = [5,28,5,29]>>> an.sort(cmp)>>> an[5, 5, 28, 29]

sort另外两个可选参数–>key 和 reverse
参数key必须要提供一个在排序过程中使用的函数作为键函数。
参数reverse用来指明列表是否要进行反向排序。

>>> lover = ['huba','dabendan','shagua','andada']>>> lover.sort(key=len)>>> lover['huba', 'shagua', 'andada', 'dabendan']>>> lover = ['huba','dabendan','shagua','andada']>>> lover.sort(reverse=True)>>> lover['shagua', 'huba', 'dabendan', 'andada']
原创粉丝点击