ex38列表相关的更多
Posted 丁头零零
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了ex38列表相关的更多相关的知识,希望对你有一定的参考价值。
这里边主要有两个关键的操作:一是split,还有一个是join。在一定程度上两者功能相反。
talk is cheap,show the code.
1 #-*- coding: UTF-8 -*- 2 ten_things = "Apples Oranges Crows Telephone Light Sugar" 3 4 print "Wait there‘s not 10 things in that list.Let‘s fix that." 5 6 stuff = ten_things.split(‘ ‘)#根据空格分割字符串 7 more_stuff = ["Day","Night","Song","Frisbee","Corn","Banana","Girl","Boy"] 8 9 while len(stuff) != 10: 10 next_one = more_stuff.pop() #随机错能够列表中删除一个元素,并赋值到外边 11 print "Adding:",next_one 12 print"more_stuff",more_stuff 13 stuff.append(next_one) 14 print "There‘s %d items now." % len(stuff) 15 16 print "There we go:",stuff 17 18 print "Let‘s do some things with stuff." 19 20 print stuff[1] 21 print stuff[-1] 22 print stuff.pop() 23 print ‘ ‘.join(stuff) 24 print ‘#‘.join(stuff[3:5])#用“#”连接所有元素,这里就是和split有点相反的一个功能 25 26 print ‘+‘.join(stuff) 27
下面详细介绍一下split的功能。
完整的split应该是:
str.split(str="",num=string.count(str))[n]
参数说明:
str: 表示为分隔符,默认为空格,但是不能为空(‘‘)。若字符串中没有分隔符,则把整个字符串作为列表的一个元素
num:表示分割次数。如果存在参数num,则仅分隔成 num+1 个子字符串,并且每一个子字符串可以赋给新的变量
[n]: 表示选取第n个分片
注意:当使用空格作为分隔符时,对于中间为空的项会自动忽略
一下是例子:
1 st0= ‘iisongiiihuaniiiigongi‘ 2 3 print st0.split(‘i‘)
这个时候输出的结果是:
[‘‘, ‘‘, ‘song‘, ‘‘, ‘‘, ‘huan‘, ‘‘, ‘‘, ‘‘, ‘gong‘, ‘‘]
并非想象汇总的只保留有效字符串,对于这个解释,@宋恒公 在其博客里边解释比较形象,搬来一用。
分析:
这个结果可能就有点出乎意料了并不是想象中的[‘song‘, ‘huan‘, ‘gong‘] 而是多了很多空字符串元素‘‘,这个怎么理解呢? 我的理解方式是,当带参数时,我们得把字符串想象成一块五花肉,我们要做 一件奇葩的事情,就是将肥肉丢到垃圾桶,把瘦肉留下。 比如‘iisongiiihuaniiiigongi‘这串五花肉,‘i‘就是要丢掉的肥肉,每次还只能切 ‘i‘这么多。 切的时候是从左到右,一刀下去肥肉‘i‘丢掉,刀刃左边的部分拿走作为list的一个元素, 刀刃右边的就是剩下的,那么继续切剩下的部分,直到切完。
‘iisongiiihuaniiiigongi‘这块肉比较特殊:
其一、他的开始和结尾都有i,而且i还不止一个!这样按照上述的方法就会切出 空气,就是列表中我们看到的‘‘, 空字符串元素。 如‘iisongiiihuaniiiigongi‘,当第一刀下去的时候,第一个i被丢到了垃圾桶, 而刀刃的左边什么都没有,所以列表的第一个元素就是‘‘,空字符串元素。 一刀下去之后,就剩下‘isongiiihuaniiiigongi‘。 所以第二刀下去之后,又得到一个空字符串元素,目前“肉”就剩下‘songiiihuaniiiigongi‘。 第三刀又切掉一个i,那么刀刃左边的就是song,所以第三个元素就是‘song‘。 直到切到最后,整坨肉就只剩下一个i了,使用最后一刀下去i被切掉了,刀刃的左边此时也 什么都没有了,所以最后一个元素任然是空字符串。
最后放一个特别好的例子:
>>> str="hello boy<[www.doiido.com]>byebye" >>> print str.split("[")[1].split("]")[0] www.doiido.com >>> print str.split("[")[1].split("]")[0].split(".") [‘www‘, ‘doiido‘, ‘com‘]
以上是关于ex38列表相关的更多的主要内容,如果未能解决你的问题,请参考以下文章