Python-数据结构-列表

1.数据结构

  数据结构是以某种方式组织在一起的数据的集合。最基本的数据结构是序列

2.序列

  序列常用的类型有以下六类:列表、元组、字符串、Unicode字符串、buffer对象、xrange对象。

3.列表 

  (1)什么是列表?

    列表是由数字、字符串等组成,可随意修改。

    a = ['samp', 'eggs', 520, 100, 34]

  (2)列表的操作

    a.索引

      列表的元素都有特定的位置,这个位置由索引来描述。

      通过索引可以找到某一元素。

      索引分为正索引和负索引。正索引是从左往右,第一个位置是0;负索引是从右往左开始,第一个位置是-1。

      a[3] = 100

      a[-3] = 520

    b.分片

      分片可以找到某一范围内的元素,并对其进行操作。具体分片请看Python-字符串。

      a[0:3] = ['samp', 'eggs', 520]

      a[-1:-3] = [520, 100]

      注意:切片左边的数要小于右面,若大于,则取空。

      分片的步长,默认步长为1,若设置步长为n(n>1),则取得元素之间会隔n-1个元素。步长也可以为负数,表示从左向右开始提取元素。

      例:numbers = [1,2,3,4,5,6,7,8,9,10]  

        numbers[0:10:2] = [1,3,5,7,9] --最后一个2表示步长为2

    c.加

      两种相同的序列之间可以进行相加。

    d.乘

      用数字n*列表会等到一个新的列表,新的列表是原列表循环n次。

      乘的操作可以用来初始化上。None是Python中的一个内键值,可以用None来表示列表中的元素是空的。

      a = [None]*10  --初始化一个长度为10的列表,每个元素的空。

    e.判断成员资格

      使用in运算符判断某一值是否在序列中。in是布尔运算符,若在序列中,则返回true;否则,返回false。

    f.迭代

      后续学习...

   (3)元素操作

    a.元素赋值

      用“=”给元素赋值,但是要利用索引说明给列表的哪个元素赋值。

    b.元素删除

      用del删除元素,但是要利用索引说明删除列表的哪个元素。

      name = ['Viga','Johny','zihan']

      del name[2]  -->name =  ['Viga','Johny']

    c.分片赋值

      通过分片赋值可以实现一次改变多个元素。

      name = ['Viga','Johny','zihan']

      name[2:] = ['chuhan','zifan']

      print(name)  -->['Viga','Johny','chuhan','zifan']

   (4)列表方法

      方法需要对象调用,例如:对象.方法(参数)

     a.append

      用于在列表末尾追加新的对象,注意:append函数是返回原列表而非返回新建列表。

      a = [1,2,3,4]

      a.append(5)

      print(a)  -->[1,2,3,4,5]

     b.count

      用于统计某个元素在列表中出现的次数。

      a = [1,2,3,4]

      b = a.count(2)

      print(b)

     c.extend

      用于在列表末尾一次性追加另一个列表的所有值。

      a =  [1,2,3,4]

      b = [5,6]

      a.extend(b)

      print(a)

      extend和连接“+”的区别:

        extend是改变原列表,“+”是生成新的列表。

     d.index

      用于从列表中找出某个值第一个匹配项的索引位置。

      a = ['a','b','c','d']

      a.index('c')  -->2

     e.insert

       insert(i,x)用于在列表的i位置插入x

     f.pop

      pop()函数默认会移除一个列表中最后一个元素,并返回该元素的值。

      a.pop()  -->'d'

      print(a)  -->['a','b','c']

      pop函数可以实现一个数据结构--栈,先进后出,最先放入列表的元素最后被移除。

     g.remove

      remove函数用来移除列表中第一个匹配元素。改变了列表但无返回值。

      a = ['a','b','c','b']

      a.remove('b')

      print(a) -->['a','c','b']

     h.reverse

      reverse函数用于将列表中的元素反向存放。改变了列表但无返回值。

      a.reverse()

      print(a)  -->['b','c','d']

     i.sort

      sort()函数用于对列表本身进行排序,改变了列表但无返回值。

      b = [5,3,4,1,6]

      b.sort()

      print(b)  -->[1,3,4,5,6]

      sort()函数不仅可以对元素是数字的列表进行排序,还可以对其他列表排序。

      sort()函数有三个可选的参数,又称为关键字参数cmp、key和reverse。

      cmp提供了比较函数的默认方式,即从小到大排序。

      key必须用来指定一个在排序过程中使用的函数,该函数可以为每个元素创造一个键。

      reverse可以用来确定是否需要反向排序,是简单的布尔值,True或Flase,reverse=True表示反向,反之,不反向。

      b.sort(cmp) -->[1,3,4,5,6]

      s = ['wq','a','safas','sss']

      s.sort(key=len)

      print(s)  -->['a','wq','sss','safas']

      b.sort(reverse = True) -->反向排序

     j.sorted

      sorted()函数对列表不进行排序,会生成列表的副本,并对副本进行排序。

      b = [5,3,4,1,6]

      a = sorted(b)

      print(b)  -->[5,3,4,1,6]

      print(a)  -->[1,3,4,5,6]

    k.reverse

      reverse()函数对列表本身进行反向排序,但返回值为None。

    l.cmp

      cmp(x,y)函数即compare比较函数,cmp函数必须要有两个参数。

      若x>y,值为1;

      若x<y,值为-1;

      若x=y,值为0。

   (5)赋值和复制的区别

    x = [1,2,3,4]

    赋值(=): y = x,这是对y列表赋值为x列表,x、y同时指向同一个列表[1,2,3,4]。

    复制:可以用分片进行复制操作,y = x[:],此时y是x的一个副本,不指向同一个列表。

        

      

 

 

       

      

    

posted on 2017-01-21 23:03  Viga  阅读(1277)  评论(0)    收藏  举报