3.基础数据类型列表

       Python中列表(list)类似于java中的ArrayList,用于顺序存储结构。列表用符号[]表示,中间的元素可以是任何类型(包括列表本身,以实现多维数组),元素之间用逗号分隔。取值或赋值的时候可以像C数组一样,按位置索引:

#-*-coding:utf-8-*-
import sys
def Main():
    array=[1,2,3]
    print array[0]
    #输出1
    array[0]='a'
    print array
    #输出['a',2,3]
    L=[123,'spam',1.23]
    #输出大小
    print len(L)
    print L[0]
    print L[:-1]#不包含最后一个
    print L+[4,5,6]#重新拼接一个新的列表
if __name__=="__main__":
    Main()

       从上边的代码中你可能发现一个有趣的事情:在Python的列表中可以混合使用不同类型的数据,像[‘a’,2,3]这样,不过我不建议你这样做,我觉着没有什么好处。

       另外还可以看到,列表是可变的序列,也就是说我们可以在“原地”改变列表上某个位置所存储的对象的值。

       Python中的list支持多数的操作,同时list也支持“切片”这样的操作。切片指的是抽取序列的一部分,其形式为:list[start:end:step].其抽取规则是:从start开始,每次加上step,直到end为止。默认的step为1;当start没有给出时,默认从list的第一个元素开始;当end=-1时表示list的最后一个元素,依次类推。一些简单的例子见下边代码:


#-*-coding:utf-8-*-
import sys
def Main():
    test=['never',1,2,'yes',1,'no','maybe']
    print test[0:3]#包括test[0],不包括test[3]
    print test[0:6:2]#包括test[0],不包括test[6],而且步长为2
    print test[:-1]#包括开始,不包括最后一个
    print test[-3:]#抽取最后3个
if __name__=="__main__":
    Main()

       字符串、列表、元组都支持切片操作,这个很方便,应该学会熟练使用它。最后,list是Python中最基础的数据结构,你可以把它当作链表、堆栈或队列来使用,效率还不错。Python中没有固定长度数组,如果你确实很在意性能,可以改入array模块来创建一个C风格的数组,它的效率很高,这里就不详细介绍了。

我们还可以对其进行排序与反转

#-*-coding:utf-8-*-
import sys
def Main():
    array=[5,2,3,1,8]
    array.sort()
    for s in array:
        print s
    array.reverse()
    for s in array:
        print s
if __name__=="__main__":
    Main()

       Python核心数据类型的一个优秀的特性就是它们支持任意的嵌套。能够以任意的组合对其进行嵌套。这种特性的一个直接应用就是实现矩阵,或者Python中的多维数组。一个嵌套列表的殂表能够完成这个基本的操作。

#-*-coding:utf-8-*-
import sys
def Main():
    M=[[1,2,3],
       [4,5,6],
       [7,8,9]]
    print M[0]
    print M[1]
    print M[2]
if __name__=="__main__":
    Main()

       处理序列的操作和列表的方法中,Python还包括了一个更高级的操作,称作列表解析表达式,从而提供了一种处理像矩阵这样结构的强大工具。列如,假设我们需要从列举的矩阵中提取出第二列。因为矩阵是按照行进行存储的,所以可以通过简单的索引即可获得行,使用列表解析可以同样简单地获得列。

#-*-coding:utf-8-*-
import sys
def Main():
    M=[[1,2,3],
       [4,5,6],
       [7,8,9]]

    col2=[row[1] for row in M]
    print col2
    col3=[row[1]+1 for row in M]
    print col3
    colfilter=[row[1] for row in M if row[1]%2==0]
    print colfilter
if __name__=="__main__":
    Main()

常用方法

  • len(list)长度
  • del list 删除对象

列表对象支持的方法:

  • append(x) 尾部追加 单个对象x,使用多个对象会引起异常。
  • count(x) 返回对象x在list中出现的次数
  • extend(L) 将列表L中的项添加到表中
  • index(x) 返回匹配对象x第一个表项的索引,无匹配时产生异常
  • insert(i,x) 在索引‘i’的元素钱插入对象x
  • pop(x) 删除列表中索引x的表项,并返回同该表项的值,无参数删除最后
  • remove(x) 删除表匹配对象x的第一个元素,无匹配时异常
  • reverse() 颠倒列表元素的顺序
  • sort() 对列表排序

此外可简单使用+实现列表连接:

[3,4] + [[1,2],5,6] --> [3,4,[1,2],5,6]

删除列表中的重复项:M = list(set(L)),python的set和其他语言类似, 是一个无序不重复元素集