python初学(2)列表 list

来源:互联网 发布:objective-c和java 编辑:程序博客网 时间:2024/05/22 04:39


(ID为注释,方便后面理解)

1、Python包含6种内建的序列,list,tuple,字符串,Unicode字符串,buffer对象,xrange对象。。。现主要进行list和tuple的学习
概述:list 类似于 C语言里的数组,但又不相同, C语言里的数组是某一个是数据类型(数据类型唯一),而 list 数据类型不唯一

实例: li = [ 1, 'a', 3.45 , 10000, [1  ,5] , (1 , 5) ] 都是可以的
2、一些基本操作
(1)索引,类似 C语言的下标访问,但区别在于支持负访问,-1代表最后一个元素

实例 :        li = [ 1, 'a', 3.45 , 10000, [1  ,5] , (1 , 5) ]        >>>li[-1]        (1,5)
(2)切片:支持强大的切片能力(优雅的捷径)在提取连续序列方面很有用,
实例:          li = [1, 2, 3, 4, 6, 5, 9]*3        print li           #结果 [1, 2, 3, 4, 6, 5, 9, 1, 2, 3, 4, 6, 5, 9, 1, 2, 3, 4, 6, 5, 9]        ID=1 print li[2  : 5]   #结果 [3, 4, 6]        ID=2 print li[-3  : -1] #结果 [6, 5]        ID=3 print li[  : 6]    #结果 [1, 2, 3, 4, 6, 5]        ID=4 print li[7 : ]     #结果 [1, 2, 3, 4, 6, 5, 9, 1, 2, 3, 4, 6, 5, 9]        ID=5 print li[ : ]      #结果 [1, 2, 3, 4, 6, 5, 9, 1, 2, 3, 4, 6, 5, 9, 1, 2, 3, 4, 6, 5, 9]        ID=6 print li[3 : 1]    #结果 []
切片操作的实现需要两个索引作为边界,第一个索引的元素包括在里面,第二个索引的元素不包括在里面
切片必须保持左边界小于有边界(步长为正数时)ID6
切片支持正负数作为索引 ID1,ID2;如果一面不写,代表直接到首部或者尾部ID3,ID4;全部不写,打印整个list,ID5
(2).2 关于步长
实例:        print li[ : : 3]        #结果 [1, 4, 9, 3, 5, 2, 6]
步长不能是0,可以为负数,注意负数时的情况,左边界大于右边界
实例:        print li[1 : 3: -1]     #结果 []        print li[3 : 1: -1]     #结果 [4, 3]
(3)、序列相加,乘法,成员资格(类似字符串)
实例:        li = [1, 2, 3, 4]        li2 = [4, 5, 7]        print li + li2          #结果 [1, 2, 3, 4, 4, 5, 7]        print ---------------        print [42]*10           #结果 [42, 42, 42, 42, 42, 42, 42, 42, 42, 42]
序列乘法可用于初始化列表,(None)
注意:字符串与list不能相加
(4)、元素赋值
    类似于数组赋值
(5)、元素删除
    del 元素(类似C++)
实例:    li = [ 1, 2, 5, 6, 7, 9]    del li[2]    print li                #结果 [ 1, 2, 6, 7, 9]
3、切片的一些扩展应用
实例:        li = [ 1, 2, 6, 6, 7, 9]        ID =1 li[1 : 1] = [10, 22, 23]        print li                #结果 [1, 10, 22, 23, 2, 6, 6, 7, 9]        ID = 2 li[2 : 5] = []        print li                #结果 [1, 10, 6, 6, 7, 9]
(1)、切片赋值 ID1  可以赋值为与原序列不等长的切片
(2)、切片删除 ID2  把删除序列赋值为[]空切片
(3)、切片插入 ID1  类似于赋值
4、方法
(1)、长度len , 最小值 min,最大值 max,
    min max区别于C++,可以比较任意参数
(2)、list函数,把任意一种类型转化为列表类型
实例:        s = 'The list is very useful'        print list(s)           #结果 ['T', 'h', 'e', ' ', 'l', 'i', 's', 't', ' ', 'i', 's', ' ', 'v', 'e', 'r', 'y', ' ', 'u', 's', 'e', 'f', 'u', 'l']

(3)、append函数 望列表后面添加元素,
    append(...)
    L.append(object) -- append object to end
可以在列表后面插任意类型的元素(object),可用于列表的扩张,
(4)、extend 可以一次性在列表的后面加另一个序列(也可以用切片赋值实现)
    extend(...)  #iterable(可以用for循环的)
    L.extend(iterable) -- extend list by appending elements from the iterable
实例:        li = [ 1, 2, 6, 6, 7, 9]        li.append(1)        li.append("you are good")        print li               #结果 [1, 2, 6, 6, 7, 9, 1, 'you are good']        li.extend([ 1, 2, 4])        li.extend(( 5, 6, 9))        print li               #结果 [1, 2, 6, 6, 7, 9, 1, 'you are good', 1, 2, 4, 5, 6, 9]
(5)、count 统计某个元素出现次数
(6)、index 类似于字符串的index(但list没有find方法)
(7)、insert 插入 (可以用上面所讲的切片赋值插入解决)
实例:        li = [ 1, 2, 6, 6, 7, 9]        li.insert(3,'four')        print li               #结果 [1, 2, 6, 'four', 6, 7, 9]
两个参数分别为插入位置,插入元素
(8)、pop函数 (唯一一个即修改列表又返回值的函数)
实例:        li = [ 1, 2, 6, 10, 7, 9]        print li.pop(2)        #结果 6        print li               #结果 [1, 2, 6, 7, 9]
pop函数如果不写参数,则弹出最后元素,否则弹出对应索引的元素

pop函数的高级应用:栈和队列
栈:用pop函数和append函数维护一个栈(先进后出)
队列:用pop函数和insert函数维护一个队列(先进先出)

(9)remove 函数 移除列表中某个值的一个匹配项
实例:        x = ['tom', 'jack', 'tom', 'lucy', 'bob', 'tom']        x.remove('tom')        print x                #结果 ['jack', 'tom', 'lucy', 'bob', 'tom']
(10)、reserve 反转函数
请注意:本函数改变了列表但不返回值
(11) sort 排序
错误实例:        x = [ 1, 2, 6, 10, 7, 9]        y = x.sort()        print x , y            #结果 [1, 2, 6, 7, 9, 10] None    正确实例:        x = [ 1, 2, 6, 10, 7, 9]        y = x[ : ]  #这一部很重要 如果改成 y = x 结果就要更改(这样相当于指向同一个列表)        y.sort()        print y                #结果  [1, 2, 6, 7, 9, 10]
相当于建立一个副本。
(12)、sorted函数 获取已排序的列表副本,理论上可以用于任何序列,之后返回一个list
实例:        x = [ 1, 2, 6, 10, 7, 9]        y = sorted(x)        print y                #结果 [1, 2, 6, 7, 9, 10]












1 0
原创粉丝点击