• Python基础:03序列:字符串、列表和元组


    一:序列

            1:连接操作符(+)

            这个操作符允许把一个序列和另一个相同类型的序列做连接,生成新的序列。语法如下:sequence1 + sequence2

            该表达式的结果是一个包含sequence1和sequence2 的内容的新序列。

            注意,这个操作不是合并操作中最快或者说最有效的。对字符串来说,这个操作不如把所有的子字符串放到一个列表或可迭代对象中,然后调用一个join方法来把所有的内容连接在一起节约内存;

            类似地,对列表来说,推荐用列表类型的extend()方法来把两个或者多个列表对象合并。

     

            2:切片操作符([], [:], [::])

            通过单一索引访问序列的一个元素的时候,如果访问一个越界的索引,会引发一个如下的异常

    >>>names = ('Faye', 'Leanna', 'Daylen')
    >>>print names[4]
    Traceback (most recent call last): File"<stdin>", line 1, in ?
    IndexError: tuple index out of range 

     

            切片访问方式,只要简单的给出开始和结束的索引值,并且用冒号分隔就可以了,其语法如下:

    sequence[starting_index:ending_index]

            通过这种方式可以得到从起始索引到结束索引(不包括结束索引对应的元素)之间的一"片"元素。起始索引和结束索引都是可选的,如果没有提供或者用None 作为索引值,切片操作会从序列的最开始处开始,或者直到序列的最末尾结束。

     

            切片访问中,没有越界一说,开始和结束素引值可以超过序列的范围。起始索引可以小于0,而对于结束索引,也可以超出序列的长度。

            切片访问中,还可以有步长参数,该参数类似于range中的步长参数。步长默认为1。

     

            3:内建函数

            像list(), str(), tuple()这样的工厂函数,实际上是将参数内容浅拷贝到新生成的对象中。其实在连接操作和重复操作时,也是同样的浅拷贝。浅拷贝就是只复制了引用。

     

    二:字符串

            1:Python实际上有3类字符串:通常意义的字符串(str),Unicode字符串(unicode),还有一个抽象类basestring,str和unicode都是basestring的子类。这个basestring是不能实例化的。

            2:在字符串中,成员操作符(in ,not in)用于判断一个字符或者一个子串是否出现在另一个字符串中。出现则返回True,否则返回False。

            3:连接字符串,除了使用连接操作符(+)之外,更加推荐使用字符串格式化操作符(%),或者把所有字符串放到一个列表中,然后用join方法将它们连在一起:

    >>> '%s %s' % ('Spanish', 'Inquisition')
    'Spanish Inquisition'
    >>> s = ' '.join(('Spanish', 'Inquisition', 'Made Easy'))
    >>> s
    'Spanish Inquisition Made Easy' 

            

            4:如果把一个普通字符串和一个Unicode字符串做连接处理,Python 会在连接操作前先把普通字符串转化为Unicode 字符串:

    >>> 'Hello' + u' ' + 'World' + u'!'
    u'Hello World!' 

            

            5:格式化操作符(%)

            Python支持两种格式的输入参数。第一种是元组,这基本上是一种C的printf()风格的转换参数集;

            Python支持的第二种形式是字典形式,这种形式里面,key 是作为格式字符串出现,相对应的value 值作为参数在进行转化时提供给格式字符串。例子如下:

    >>> adict = {'lang': 'Python', 'howmany':3}
    >>> 'There are %(howmany)d %(lang)s QuotationSymbols' % adict
    'There are 3 Python Quotation Symbols' 

            格式字符串既可以跟print语句一起用来向终端用户输出数据,又可以用来合并字符串形成新字符串。

     

            6:原始字符串

            原始字符串是为了对付那些在字符串中出现的特殊字符。在原始字符串里,所有的字符都是直接按照字面的意思来使用,没有转义特殊或不能打印的字符。原始字符串的这个特性让一些工作变得非常的方便,比如正则表达式的创建。

     

            除了原始字符串符号(引号前面的字母"r")以外,原始字符串跟普通字符串有着几乎完全相同的语法。这个'r'可以是小写也可以是大写,唯一的要求是必须紧靠在第一个引号前。

            比如需要一个反斜杠加一个'n',而不是一个换行符:

    >>> '
    '
    '
    '
    >>> astr = '
    '
    >>> print astr
    
     
    >>> bstr = r'
    '
    >>> print bstr
    
    
    >>> r'
    '
    '\n' 

     

    7:chr()、unichr()和ord()

            chr()函数用一个范围在range(256)内的(就是0到255)整数做参数,返回一个对应的字符.unichr()跟它一样,只不过返回的是Unicode字符。

            ord()函数是chr()函数(对于8 位的ASCII 字符串)或unichr()函数(对于Unicode对象)的配对函数,它以一个字符(长度为1的字符串)作为参数,返回对应的ASCII数值,或者Unicode数值,如果所给的Unicode 字符超出了你的Python 定义范围,则会引发一个TypeError 的异常。

    >>> chr(65)
    'A'
    
    >>> ord('a')
    97
    
    >>> unichr(12345)
    u'u3039' 

            

    8:字符串内建方法join

            str.join(iterable)

           以str为分隔符,将seq中所有字符串合并为一个新的字符串,并返回新的字符串。比如:

    >>> ''.join(('hello',  'world',  'hehe'))
    'helloworldhehe'
    
    >>> ' '.join(('hello',  'world',  'hehe'))
    'hello world hehe'
    
    >>> '-'.join(('hello',  'world',  'hehe'))
    'hello-world-hehe'


    三:列表

            1:列表的比较

            如果比较的是两个同类的对象,比较操作是非常直观的。比如数字和字符串,直接比较它们的值就行了。对于序列类型,比较操作稍微有点复杂了。

            列表的比较,如果它的元素都是相同类型,则用标准的比较方法来作比较.否则,当我们比较list1和list2时,list1和list2进行逐项比较。如果比较的值相等,那么两个序列的下一个值继续比较,直到不相等的情况出现,或者到达较短的一个序列的末尾,在这种情况下,长的序列被认为是"较大"的。

            a:对两个列表的元素进行比较.

            b:如果比较的元素是同类型的,则比较其值,返回结果.

            c:如果两个元素不是同一种类型,则检查它们是否是数字:

                    如果都是数字,执行必要的数字强制类型转换,然后比较。

                    如果有一方的元素是数字,则另一方的元素"大"(数字是"最小的")

                    否则,通过类型名字的字母顺序进行比较.

            d:如果有一个列表首先到达末尾,则另一个长一点的列表"大".

            e:如果比较完了两个列表的元素而且所有元素都是相等的,那么结果就是个平局,就是说返回一个0。

     

    四:元组

            1:虽然元组本身不可变,但是元组可以包含可变的对象。

     

  • 相关阅读:
    ural 1028. Stars 树状数组
    hoj 1110 Simply Syntax // poj 1126 Simply Syntax
    hdu 1827 Summer Holiday // tarjan求缩点
    hoj 3005 Game Rigging 强联通分量求缩点
    hoj 2741 The Busiest Man // 强连通分支+缩点+传递闭包
    poj 2488 A Knight's Journey 回溯
    hoj 1520 The Bottom of a Graph // poj 2553 The Bottom of a Graph
    单链表的操作C语言实现(转)
    UltraEdit 提示 希望转换xxx 到DOS格式吗?
    linux 下查看服务 服务运行级别(转)
  • 原文地址:https://www.cnblogs.com/gqtcgq/p/7247214.html
Copyright © 2020-2023  润新知