zoukankan      html  css  js  c++  java
  • 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']
  • 相关阅读:
    在from表单中提交同name数据时,怎么获取所有值
    面试题
    String的创建模式
    spring的事务支持
    微信小程序+java实现附件上传以及下载打开详细过程记录
    spring编写AOP代理上的一点小坑
    java静态内部类的作用
    Python学习 :json、pickle&shelve 模块
    Python学习 :正则表达式
    Python学习 :常用模块(四)----- 配置文档
  • 原文地址:https://www.cnblogs.com/dingtou00/p/7906553.html
Copyright © 2011-2022 走看看