[python]学习笔记,第二章列表和元素

     在Python中最基本的数据结构就是序列

     一、其中最为常用的是列表和元组。

     1.首先看序列,建立一个序列,以及序列间的嵌套

>>> edward=['ni  hao',43]
>>> john=['ni ye hao',42]
>>> database=[edward,john]
>>> database
[['ni  hao', 43], ['ni ye hao', 42]]
>>> john
['ni ye hao', 42]

    2.索引,类似数组的访问a[1];

    3.序列的分片以及乘除操作

>>> tag='<a href="www.baidu.com">baidu</a>'
>>> tag[2:1]
''
>>> tag[4:5]
'r'
>>> tag[4:11]
'ref="ww'
>>> tag+'helloworld'
'<a href="www.baidu.com">baidu</a>helloworld'
>>> tag*2
'<a href="www.baidu.com">baidu</a><a href="www.baidu.com">baidu</a>'
>>> [11]*11
[11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11]

    4.成员资格,in操作符

    >>> 'w' in tag
    True

    5.长度,最大和最小

>>> number=[100,1,290]
>>> max(number)
290
>>> min(number)
1
>>> len(number)
3
>>> 

    二、列表,Python的苦力

    列表是可变的,可以改变列表的内容。

    list方法

    append方法:用于在列表末尾追加新的对象,append方法与其他方法类似,只是在恰当的位置修改列表,也就是说不是创建了一个新列表而是在原有列表上进行修改。

    count方法,统计某个元素在列表中出现的次数。

    extend 方法,在列表的末尾一次性追加另一个序列的多个值,换句话说,可以用新列表扩展原有的列表。比较类似连接操作,区别在与extend方法修改的原有序列,而+则返回的是一个新序列,当然也可以用分片赋值的方法来实现相同的结果。

    index 方法,从列表中找出某个值第一个匹配项的索引位置

    insert方法,将对象插入列表中

    pop 方法,移除列表中的一个元素,并返回该元素的值。类似数据结构的出栈操作。注意pop方法有返回值。

remove 方法,用于移除列表中某个值的第一个匹配项,和index方法相反。 注意是第一个匹配项,如果有多个则只移除第一个。

    reverse方法,将列表中的元素反向存放。颠倒的意思。

    sort 方法,用于再原位置对列表进行排序,这意味着改变原来的列表,让其中的元素按一定的顺序排序,并不是简单的返回一个列表的副本。也就是说不能通过sort函数返回一个和原序列占同样内存的副本并显示出来。

>>> name
['wangwu', 'zhangsan', 'lisi', 'xioahua']
>>> name.append("nihao")
>>> name
['wangwu', 'zhangsan', 'lisi', 'xioahua', 'nihao']
>>> names=name.append("shsh")
>>> names#此处不会赋值成功显然append并不是返回一个对象

>>> name
['wangwu', 'zhangsan', 'lisi', 'xioahua', 'nihao', 'shsh']
>>> name.count('shsh')
1
>>> name.append('wangwu')
>>> name.count('wangwu')
2
>>> sex=['man']
>>> name.extend(sex)
>>> name
['wangwu', 'zhangsan', 'lisi', 'xioahua', 'nihao', 'shsh', 'wangwu', 'man']
>>> name+sex
['wangwu', 'zhangsan', 'lisi', 'xioahua', 'nihao', 'shsh', 'wangwu', 'man', 'man']
>>> newname=name+sex
>>> newname
['wangwu', 'zhangsan', 'lisi', 'xioahua', 'nihao', 'shsh', 'wangwu', 'man', 'man']#利用连接也能达到extend的功能
>>> name[len(name):]=sex
>>> name
['wangwu', 'zhangsan', 'lisi', 'xioahua', 'nihao', 'shsh', 'wangwu', 'man', 'man']
>>> del name[len(name)]#此处报错是因为超出了序列的长度
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
IndexError: list assignment index out of range
>>> len(name)
9
>>> del name[8]
>>> name
['wangwu', 'zhangsan', 'lisi', 'xioahua', 'nihao', 'shsh', 'wangwu', 'man']
>>> del name[len(name)-1]
>>> name
['wangwu', 'zhangsan', 'lisi', 'xioahua', 'nihao', 'shsh', 'wangwu']


>>> name.index('lisi')
2
>>> name[2]
'lisi'

>>> name.insert(0,'nihao')
>>> name
['nihao', 'wangwu', 'zhangsan', 'lisi', 'xioahua', 'nihao', 'shsh', 'wangwu']

>>> name.pop()
'wangwu'
>>> name.pop(3)
'lisi'
>>> name
['nihao', 'wangwu', 'zhangsan', 'xioahua', 'nihao', 'shsh']
>>> name.pop(0)
'nihao'

>>> name.append(name.pop())
>>> name
['wangwu', 'zhangsan', 'xioahua', 'nihao', 'shsh']


>>> name.insert(3,'wangwu')
>>> name
['wangwu', 'zhangsan', 'xioahua', 'wangwu', 'nihao', 'shsh']
>>> name.remove('wangwu')
>>> name
['zhangsan', 'xioahua', 'wangwu', 'nihao', 'shsh']
>>> name.reverse#忘记加括号了
<built-in method reverse of list object at 0xb74e288c>
>>> name
['zhangsan', 'xioahua', 'wangwu', 'nihao', 'shsh']
>>> x=[1,2,3,4,5,6]
>>> x
[1, 2, 3, 4, 5, 6]
>>> x.reverse()
>>> x
[6, 5, 4, 3, 2, 1]
>>> name.reverse()
>>> name
['shsh', 'nihao', 'wangwu', 'xioahua', 'zhangsan']

>>> name.sort()
>>> name
['nihao', 'shsh', 'wangwu', 'xioahua', 'zhangsan']>>> x=[2,5,1,9,5,4,0,8]
>>> x.sort()
>>> x
[0, 1, 2, 4, 5, 5, 8, 9]
>>> y=x.sort()
>>> y >>> x=[2,5,1,9,5,4,0,8]
>>> y=x[:]
>>> y.sort()
>>> x
[2, 5, 1, 9, 5, 4, 0, 8]
>>> y
[0, 1, 2, 4, 5, 5, 8, 9]

    cmp方法,cmp(x,y),如果大于则返回1,小于返回-1,等会返回0。

    reverse关键字的使用,比如x.sort(reverse=ture)则表示反向排序。

   3.元组

     元组和列表差不多,但区别在于元组不可更改,元组的创建很简单,仅用“,”分割就可以。比如

     >>>1,2,3

         (1,2,3)        就创建了元组。元组一般用圆括号表示。

     tuple函数,将序列转换成元组。tuple([1,2,3])

      尽管看起来序列更好用,元组的限制太多。但元组也有重要的作用

      元组可以在映射中当做键使用,而列表则不行

      元组可以作为很多内建函数和方法的返回值存在,也就是说你必须对元组进行处理。(当然此处我们还用不到这些)

    

    

posted @ 2012-04-16 15:54  明珠交到我手上  阅读(598)  评论(0编辑  收藏  举报