python列表和元组(第二章)

发布时间:2019-08-27 07:59:12编辑:auto阅读(1825)

    python列表和元组(第二章)

    1)列表和元组

    python包涵6中内建的序列(列表,元组,字符串,Unicode字符串,buffer对象和xrange对象),本章讲常用的2中类型:列表和元组
    列表和元组的区别:列表可以修改,元组则不能

     

     

    2)索引

    >>> greet='hello                                
    >>> greet[0]
    'h'
    >>> greet='hello'
    >>> greet[-5]
    'h'
    上面2者显示的结果是一致的,因为字符串是有字符组成的序列,索引0指向第一个元素,就是hello这个单词中得第一个字母h,而python最后一个元素定义为-1最后第二个元素定义为-2,所以h为倒数第五个字母,所以定义为-5。
     

     

    3)索引例子:编写日期索引,显示结果为月份 日期,年份。

    months=['1m','2m','3m','4m','5m','6m','7m','8m','9m','10m','11m','12m']
    endings=['st','nd','rd']+17*['th']\
    +['st','nd','rd']+7*['th']\
    +['st']
    year=raw_input('year:')
    month=raw_input('month(1~12):')
    day=raw_input('day(1~31):')
    month_number=int(month)
    day_number=int(day)
    month_name=months[month_number-1]
    day_name=day+endings[day_number-1]
    print month_name + '_'+day_name+'_,' +year
     
    显示结果为:
    year:2011
    month(1~12):11
    day(1~31):12
    11m 12th ,2011
     
    【注:python下要将月份跟日期减1,以获取正确的索引。比如说现实日期为11号,因为python从0开始,所以python下索引10为日期11号】

     

    4)分片:

    >>> test=[1,2,3,4,5,6,7,8,9]
    >>> test[3:8]
    [4, 5, 6, 7, 8]
    【注:第一个索引3,是python序列从0开始数,数到3,也就是正常数值4,第二个索引是正常数值下的8,即一个用py数,一个用正常数】
    >>> test=[1,2,3,4,5,6,7,8,9]
    >>> test[-4:]
    [6, 7, 8, 9]
    【注:显示为倒数-4位置数值到末尾数值】

     

    5)例:对url进行分割

    >>> url='www.baidu.com'
    >>> url[4:-4]
    'baidu'
    注:或许有这样的疑问:[4:-4]第一个表示从左边数py下的第4个,也就是元素中的第5个,的确是字母“b”,但后面那个-4不是从末尾元素-1开始数起,这样数的话,-4应该是".",为啥是字母u呢?
    回答:索引里第二个index是负数的话,是除去从右边数那么多个的意思,所以是-4的话,就是除去右边4个,所以是把".com"除掉了,而不是从右边数第4个。】

     

     

    6)例:检查用户和密码的脚本:

    database=[
    ['lf','123'],
    ['zml','911011'],
    ['lxm','580307'],
    ['zzg','541223']]
    username=raw_input('put name:')
    code=raw_input('put code:')
    if [username,code] in database:print 'right'
    显示结果为:
    put name:lxm
    put code:580307
    right
    经测试database后面也可以用()来包含数据信息。
     

    7)改变列表:

    例:改变列表里第3个元素的数值
    >>> x=[1,2,3]
    >>> x[2]=6
    >>> x
    [1, 2, 6]
    【注:x[2]是指py里的2,也就是实际数值里的第3位,并不是指替换x里数值为2的数,因为是用索引来标记替换的值】

     

     8)分片赋值:

    >>> name=list('perl')
    >>> name
    ['p', 'e', 'r', 'l']
    >>> name[2:]=list('ace')
    >>> name
    ['p', 'e', 'a', 'c', 'e']
    【注:name[2:]表示从py的2开始,包括2在内,被新list里的内容替换掉】
    >>> num=[1,2,3,4,5]
    >>> num[1:4]=[]
    >>> num
    [1, 5]
    【注:当[1:4]替换为[](空)时,就类似于删除这些元素

     

    9)append---用于在列表末尾追加新的对象

    >>> num=[1,2,3]
    >>> num.append(4)
    >>> num
    [1, 2, 3, 4]

     

    10)count---统计某个元素在列表中出现的次数

    >>> [1,2,1,[1,2],[1,[1,2]]].count(1)------>2
    >>> [1,2,1,[1,2],[1,[1,2]]].count([1,2])------>1
    >>> [1,2,1,[1,2],[1,[1,2]]].count([1,[1,2]])------>1
     

    11)extend---在列表末尾一次性追加另一个序列中的多个值(不同于append,即用新列表扩展原有列表,和连接操作不同,连接操作返回一个新列表,而extend方法会修改原始的列表

    >>> a=[1,2,3]
    >>> b=[4,5,6]
    >>> a.extend(b)
    >>> a
    [1, 2, 3, 4, 5, 6]

     

    12)index---找出第一个匹配的索引

    >>> word=['we','are','the','world','on','the','earth']
    >>> word.index('world')------->3
     
    >>> word=['we','are','the','world','on','the','earth']
    >>> word.index('the')---------->2
     

    13)remove---删除第一个匹配的索引

    >>> word=['we','are','the','world','on','the','earth']
    >>> word.remove('world')---------->['we', 'are', 'on', 'the','earth']

     

    14)insert---将对象插入到列表里

    >>> num=[1,2,3,4,5]
    >>> num.insert(5,'xx')
    >>> num
    [1, 2, 3, 4, 5, 'xx']

     

    15)pop---移除列表中一个元素默认为最后一个),并且显示该元素的值

    >>> num=[1,2,3,4,5]
    >>> num.pop()------>5
    >>> num------->[1, 2, 3, 4]

    >>> num=[1,2,3,4,5]
    >>> num.pop(3)----->4
    >>> num-------->[1, 2, 3, 5]

    【注:pop是唯一一个既能修改列表又能返回元素值的列表方式】

     

    16)py里有种常见的数据结构叫---,一般分别入栈出栈,而pop和append方法操作结果恰好相反,如果入栈刚刚出栈的值,最后得到的结论还是原来的栈

     例:>>> num=[1,2,3,4]
    >>> num.append(num.pop())
    >>> num
    [1, 2, 3, 4]

     

    17)reserver---将表中的元素反向存放

    >>> num=[1,2,3,4,5]
    >>> num.reverse()
    >>> num
    [5, 4, 3, 2, 1]

     

    18)sort---把元素按照一定的顺序排列

    >>> x=[3,1,2,6,9,7]
    >>> x.sort()
    >>> x
    [1, 2, 3, 6, 7, 9]

    例:保留x表里的列表不变,y里显示为排序后的列表

    >>> x=[3,1,2,6,9,7]
    >>> y=x.sort()
    >>> print y
    None------------提示为none,这是
    因为sort方法修改了x却返回了空值,最后得到的是已经排序的x和值为none的y。

    >>> x=[3,1,2,6,9,7]
    >>> y=x[:]
    >>> y.sort()
    >>> x------>[3, 1, 2, 6, 9, 7]
    >>> y------>[1, 2, 3, 6, 7, 9]

    这个方法是正确的,先把x的副本赋值给y,然后对y进行排序,而x还依旧存在。

     

     

    19)高级排序,例:

    >>> x=[4,6,2,1,7,9]
    >>> x.sort(reverse=True)
    >>> x
    [9, 7, 6, 4, 2, 1]

    注:(reverse=True或者False)的时候,比如第一个字母必须大写,否则无法识别。

     

    20)元组

    tuple---与list函数相同,但这个用于元组。

    >>>tuple([2,3,4])
    >>>(2, 3, 4)

关键字