Chinaunix首页 | 论坛 | 博客
  • 博客访问: 180075
  • 博文数量: 13
  • 博客积分: 395
  • 博客等级: 一等列兵
  • 技术积分: 364
  • 用 户 组: 普通用户
  • 注册时间: 2012-06-05 20:06
文章分类
文章存档

2013年(2)

2012年(11)

分类: 系统运维

2012-12-14 22:01:07

之前专业课程设计,让写一个客户端和服务器的通讯录查询系统。大家都用C语言写的。只有我用python做的,当时感觉python这个东西挺有意思。但是仔细看了python之后会发现,其实我当时写出来的的,只不过是python版写的C语言而已。

给我的感觉就是,我是在用python在写C语言的程序,虽然是python的语句,可是思想却是按照C语言的流程在走。深入的学习下python却发现,其实python和C有着完全不同的风格。甚至完全不同的设计形式。当然这只是我这个python初学者的一点点小小的体悟而已啦。

初学python,我这个习惯了C的小菜鸟老是记不住好多复杂的方法和操作,这里对列表进行一下总结。以便日后学习。

其实我本来想先对python的所有数据类型做个小总结的,但是感觉并没有把握python全部变量设计的思想。只能先一样一样的进行总结。


列表是一种可变的数据类型,他由一系列的元素组成,这一系列可以使任何类型的元素,可以是不同类型的元素。列表,不过是一个有序的序列而已,用来组织一堆有规则或者无规则的数据。

1、列表创建和赋值:

点击(此处)折叠或打开

  1. list_name=[element1,element2,element3,...]

列表中可以添加任何类型的元素,如下的例子:

点击(此处)折叠或打开

  1. >>> list=[1,2.5,'a','abc',[5,6],(7,8)]
  2. >>> print list
  3. [1, 2.5, 'a', 'abc', [5, 6], (7, 8)]
如上,一个列表中可以添加整数、浮点数、字符、字符串、另一个列表、元组等各种不同的数据类型。

2、添加元素:

列表对象在Python中是List类,python为List类提供了append方法,用来在列表的尾部添加一个元素,如下:

点击(此处)折叠或打开

  1. >>> list_1=[1]
  2. >>> list_1.append(2)
  3. >>> list_1.append('hello')
  4. >>> print list_1
  5. [1, 2, 'hello']

append的参数类型为object,即可以为List添加任何类型的元素。使用点号来调用append方法。

List类还有一个方法insert,用于将元素插入到列表中指定索引的位置,语法如insert(index,value),即往index索引的位置插入值为value的元素,后边的元素依次往后移。如下:

点击(此处)折叠或打开

  1. >>> list_2=[1,2,3,4,5,6]
  2. >>> list_2.insert(1,'hello')
  3. >>> list_2.insert(4,'world')
  4. >>> print list_2
  5. [1, 'hello', 2, 3, 'world', 4, 5, 6]

3、删除元素:

列表的删除使用remove()方法,该方法用于移除列表中指定值的第一个匹配值。如果元素不存在,python将抛出ValueError异常。如下:

点击(此处)折叠或打开

  1. >>> list=[1,2,3,4,5]
  2. >>> list.remove(3)
  3. >>> print list
  4. [1, 2, 4, 5]

从一个列表中删除元素还可以用del语句来实现,该语句将删除列表中指定索引位置的元素。如下:

点击(此处)折叠或打开

  1. >>> list=[1,2,3,4,5]
  2. >>> del list[2]
  3. >>> print list
  4. [1, 2, 4, 5]


4、分片(slice)操作:

就像dota中每个英雄都有一个灵魂技能一样,我感觉分片操作就是列表的灵魂技能。这个操作可以随意的取出列表中的任何一部分。分片操作中有两个索引,指的是从第一个索引到第二个索引中所指定的所有元素(不包含第二个索引所指向的元素)。格式如:list_name[m:n]。


点击(此处)折叠或打开

  1. >>> list_1=['p','y','t','h','o','n']
  2. >>> list_1[2:]=['q','t']
  3. >>> print list_1
  4. ['p', 'y', 'q', 't']

如果没有指定分片的后一个索引,那么指的是从第一个索引元素到最后一个元素。


点击(此处)折叠或打开

  1. >>> list_1[2:2]=['h','e','l','l','o']
  2. >>> print list_1
  3. ['p', 'y', 'h', 'e', 'l', 'l', 'o', 'q', 't']
接上边的代码,这里list_1[2:2],用一个与原序列不等长的序列将一个分片替换掉,这里替换的是一个空的分片。实际上的操作其实是插入了一个序列。

以此类推,使用这种方法来删除元素其实也是可行的。


5、负数索引:

在列表中让我感觉到跟普通的C数组最大不同的就是使用负数的索引。负数索引从列表的尾部开始计数,最尾端的元素索引表示为-1,然后依次往前是-2,-3....以此类推。


点击(此处)折叠或打开

  1. >>> test_list=['hello','world','python']
  2. >>> print test_list[-2]
  3. world
分片处理之中也是可以使用负数的索引的,其实我觉得python解释的时候负数与正数都是一样的,只是按照不同的规则表示的列表中的元素而已。


点击(此处)折叠或打开

  1. >>> test_list=[1,2,3,4,5,6]
  2. >>> list_2=test_list[1:4]
  3. >>> list_3=test_list[-3:-1]
  4. >>> list_4=test_list[0:-2]
  5. >>> print list_2
  6. [2, 3, 4]
  7. >>> print list_3
  8. [4, 5]
  9. >>> print list_4
  10. [1, 2, 3, 4]

如上代码,有了负数索引的规定,其他的一切操作都是与正数相同的,我想这个机制大概只是为了让程序员更方便而定义的吧。



6、列表的连接:

列表连接总共有两种实现方式,一种是调用extend()方法,这个方法其实很简单,以一个列表作为参数,这个列表就是接在另一个列表之后的列表。


点击(此处)折叠或打开

  1. >>> list_1=[1,2,3,4,5]
  2. >>> list_2=[6,7,8]
  3. >>> list_1.extend(list_2)
  4. >>> print list_1
  5. [1, 2, 3, 4, 5, 6, 7, 8]

最神奇的的是,列表的连接甚至可以使用运算符+、+=或*。来进行列表操作。如下:


点击(此处)折叠或打开

  1. >>> list_1=[1,2,3]
  2. >>> list_2=[4,5,6]
  3. >>> list_3=list_1+list_2
  4. >>> print list_3
  5. [1, 2, 3, 4, 5, 6]
  6. >>> list_1+=list_2
  7. >>> print list_1
  8. [1, 2, 3, 4, 5, 6]
  9. >>> list_4=list_1*3
  10. >>> print list_4
  11. [1, 2, 3, 4, 5, 6, 1, 2, 3, 4, 5, 6, 1, 2, 3, 4, 5, 6]

7、列表的查找:

这个就没啥技术含量了。。。无非就是按照index找value,按照value找index。
index()这个方法就是根据value找index的方法。返回值就是固定值对应的index。‘


点击(此处)折叠或打开

  1. >>> list_1=[4,3,2,1]
  2. >>> print list_1.index(3)     #这句是根据value找index
  3. 1
  4. >>> print list_1[3]           #这句是根据index找value
  5. 1
  6. >>> 4 in list_1               #这是判断一个元素是否在列表中
  7. True

8、列表的排序:

列表的排序需要使用List类中的sort()方法。sort方法并不是返回一个列表,是直接修改原来的列表。所以如果不想被修改的话最好有备份下。
sort()方法默认是按照升序排列的:

点击(此处)折叠或打开

  1. >>> list_1=[3,4,2,5,1]
  2. >>> list_1.sort()
  3. >>> print list_1
  4. [1, 2, 3, 4, 5]
sort方法有一个可选的参数reverse,reverse是反转的意思。这个值默认是False,表示升序排序。如果设置为True,则进行降序排序。

刚才异想天开,sort方法对于不同的数据类型是怎么排序的呢?果断试了一下。。。


点击(此处)折叠或打开

  1. >>> list_1=[(9,1),'a','abc',5,4,2,7,8]
  2. >>> list_1.sort()
  3. >>> print list_1
  4. [2, 4, 5, 7, 8, 'a', 'abc', (9, 1)]
事实证明python是先对不同的数据类型排序,然后对每种数据类型再进行分别排序的。


9、列表的反转:

reverse()方法用于将列表中的元素反向存放:


点击(此处)折叠或打开

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



总算码完了,累的手疼了。这样以后经常来看看应该就不会忘了。


阅读(10451) | 评论(0) | 转发(1) |
给主人留下些什么吧!~~