您的位置:首页 > 编程语言 > Python开发

初心大陆-----python宝典   第五章之列表

2016-06-21 15:44 309 查看
昨天是星期的第一天,简单回顾下昨天学习的东西,在重新看下之前的博客吧。

好啦,接着今天的宝典开始学习吧,我只有在学不进去的时候才会开启我的魔幻世界,正常情况下,他应该都是隐藏在我体内。

列表:宝典上大概的意思是:列表是python的苦力,python也就是初心大陆啦。
不知道小P老师在哪里找来的小苦力,试试我能使唤不。
重点说下:列表是可变的,可以更改列表的内容,简单来说就是这个小苦力没脾气,咋欺负都行。

使用苦力先要用工具来敲打他,list函数就是工具之一。
因为Hello这个小苦力不能修改,所以根据字符创建列表还是很有用的。
>>> list('Hello')
['H', 'e', 'l', 'l', 'o']

接着来掌握以下基本的列表操作:例如索引,分片,连接和乘法。有趣的是列表可以被修改。
改变列表:元素赋值
我之前好像学过赋值例如:x = 2,貌似没必要把之前讲过的在讲一遍吧。
要使用索引标记来为某个特定的位置明确的元素赋值:
接下来实践:

>>> x = [1,1,1]
>>> x
[1, 1, 1]
>>> x[1] =2 这里的因为序列的开头是从0开始的所以这里的1,实际上是第二个元素。
>>> x
[1, 2, 1] x[1] 已经赋值给了2 所以这里发生了更改。
>>>
注意事项:不能为一个位置不存在的元素赋值,因为他本身就不存在,咋赋值,例如列表长度为2,那么不能为索引为100的元素进行赋值,如果非要这么做,就需要创建一个101或者更长的列表。

下面接着学习删除元素:
从字面意思来说就是删除元素,把元素删除,貌似没啥可说的,实验吧:
根据实验显示,也没啥可说的,就是把元素为第二个的删除了。
>>> names = ['Alice','Beth','Cecil','Dee-Dee','Earl']
>>> names
['Alice', 'Beth', 'Cecil', 'Dee-Dee', 'Earl']
>>> del names[2]
>>> names
['Alice', 'Beth', 'Dee-Dee', 'Earl']
>>>

下面接着说,分片赋值:
简单来说就是先分片,选出一段内容进行赋值替换,是这个吧。
试验下看看:
先用list将Peal字符串创建成列表形式,再利用分片将第二个元素后面的元素进行赋值成dd
>>> name = list('Perl')
>>> name
['P', 'e', 'r', 'l']
>>> name [2:] = list('dd')
>>> name
['P', 'e', 'd', 'd']
>>>
还有更好的功能,不光是等值替换,就算是原序列与不登长的序列也可以进行分片替换

试验下:
>>> name = list('Peal')
>>> name[1:] = list('ython')
>>> name
['P', 'y', 't', 'h', 'o', 'n']
>>>
还有新功能,咋这么牛逼,啥功能呀,
分片赋值不光能替换,还能插入新元素,你等等我先试试再说
>>> numbers = [1, 5]
>>> numbers[1:1] = [2,3,4]
>>> numbers
[1, 2, 3, 4, 5]
>>>
实际上刚刚的替换是利用了空的分片,那么我利用空的分片也是可以用了删除元素的。这个结果用del也是一样的效果。

试试
>>> numbers = [1,2,3,4,5]
>>> numbers[1:4] = []
>>> numbers
[1, 5]
>>>
一个新的概念,列表方法,
方法是一个与某些对象有紧密联系的函数,对象可能是列表,数字,也可能是字符串或者其他类型的对象,一般调用方法的可以这样
对象.方法(参数)
一个新的列表方法:append,作用用于在列表末尾追加新的对象:
>>> lst = [1,2,3]
>>> lst.append(4)
>>> lst
[1, 2, 3, 4]
>>> 为啥变量名不起成list,而是lst呢,如果使用list作为变量名,就无法调用list函数了。
append他修改的表,是直接修改的原来的列表。

第二个列表方法count,这个很显而易见,count就是计数。
例如:还是实际操刀演示吧:
统计列表中to出现的次数。
>>> ['to','be','or','not','to','be'].count('to')
2
>>>

又一个新的列表方法,extend,话不多少,实验搞起:
>>> a = [1,2,3]
>>> b = [4,5,6]
>>> a.extend(b)
>>> a
[1, 2, 3, 4, 5, 6]
>>>
有点问题,折合字符串拼接貌似没啥不一样那呢。真的是这样吗?
字符串拼接,里面的a最后还是没有变化,而用了extend的话a是有发生改变的。
>>> a
[1, 2, 3]
>>> b
[4, 5, 6]
>>> a + b
[1, 2, 3, 4, 5, 6]
>>> a
[1, 2, 3]
>>>
貌似利用a = a + b也可以实现效果,就是可读性没有extend好
试验下:
>>> a = [1,2,3]
>>> b = [4,5,6]
>>> a
[1, 2, 3]
>>> b
[4, 5, 6]
>>> a = a + b
>>> a
[1, 2, 3, 4, 5, 6]
>>>

再说一个方法:index,作用说明:index方法用于从列表中找出某个值第一个匹配项第一个匹配项的索引位置:
>>> knights = ['We','are','the','knights','who','say','ni']
>>> knights.index('who')
4
>>> knights = ['We','are','the','knights','who','say','ni','ni']
>>> knights.index('ni')
6
>>>
>>> knights = ['We','are','the','knights','who','say','nvi','ni']
>>> knights.index('ni') 在调用列表内的内容,如果没有会报异常。
7
>>>

insert方法,用于将对象插入到列表中,就是插入的意思。
>>> numbers = [1,2,3,5,6,7]
>>> numbers.insert(3,4)
>>> numbers
[1, 2, 3, 4, 5, 6, 7]
>>>
与extend方法一样insert也可以实现分片赋值来实现。
>>> numbers
[1, 2, 3, 4, 5, 6, 7]
>>> numbers[4:4] = ['four']
>>> numbers
[1, 2, 3, 4, 'four', 5, 6, 7]
>>>

在说一个新的函数pop,作用是,移除列表中的一个元素,默认是最后一个,移除后并显现移除的元素。
pop方法是唯一一个既能修改列表,又返回值得列表方法。
>>> numbers
[1, 2, 3, 4, 'four', 5, 6, 7]
>>> numbers.pop()
7
>>> numbers
[1, 2, 3, 4, 'four', 5, 6]
>>> numbers.pop(4)
'four'
>>> numbers
[1, 2, 3, 4, 5, 6]
>>>

在接受一个新的列表方法:remove,移除吧。
试验下,感觉都好熟悉呢。移除列表中的第一个匹配上的值。
>>> x = ['to','be','or','not','to','be']
>>> x.remove('be')
>>> x
['to', 'or', 'not', 'to', 'be']
>>> x.remove('to')
>>> x
['or', 'not', 'to', 'be']
>>>
在学习一个新的方法。reverse方法,作用将列表中的元素反向存放。
实验下吧:
>>> x = [1,2,3]
>>> x.reverse()
>>> x
[3, 2, 1]
>>>
如果需要一个序列进行反向迭代,可以使用reversed,这个函数返回的不是一个列表,而是一个迭代器对象。使用list函数把返回的对象转换为列表也是可以的。
>>> x
[1, 2, 3]
>>> list(reversed(x))
[3, 2, 1]
>>>
>>>

在学习一个列表方法:sort作用:在原位置对列表进行排序,是改变的原表。
>>> x = [1,2,3,47,3,2,5]
>>> x.sort()
>>> x
[1, 2, 2, 3, 3, 5, 47]
>>>
sort方法在着重说明下:因为他修改的原列表数据,我想要一个不修改原列表的排序,要一个列表副本,是排序好的。这种怎么实现:
>>> x = [1,2,3,47,3,2,5]
>>> y = x[:]
>>> y
[1, 2, 3, 47, 3, 2, 5]
>>> x
[1, 2, 3, 47, 3, 2, 5]
>>> y.sort()
>>> y
[1, 2, 2, 3, 3, 5, 47]
>>> x
[1, 2, 3, 47, 3, 2, 5]
>>>
有点累累了。。休息总结下。稍后继续
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  python 宝典 初心大陆