• Python学习系列(四)(列表及其函数)


    一、基本概念
    1,列表是什么?
          一种序列型数据类型,一有序数据集合用逗号间隔用方括号括起来。
    2,几种访问形式
    1)索引访问,语法结构:list_name[index]。注意,列表的索引值从0开始。例如:
    1 >>> li=[1,2,3,4,5]
    2 >>> print li[2],li[0]
    3 3 1
    View Code

    删除列表的项:

    1 >>> del li[2]
    2 >>> print li
    3 [1, 2, 4, 5]
    View Code

    2)切片访问,语法结构:list_name[start_index,end_index,step]。例如:

    1 >>> li=[1,2,3,4,5]
    2 >>> print li[2:4]
    3 [3, 4]
    4 >>> li=[1,2,3,4,5]
    5 >>> print li[2:4:2]
    6 [3]
    View Code

    删除列表项:

    1 >>> del li[2:4]
    2 >>> print li
    3 [1, 2, 5]
    View Code

    3,基本运算

    1)加法:将多个列表组合成一个新的更长的列表。
    1 >>> li=[1,2,3,4,5]
    2 >>> li1=range(6,9)
    3 >>> li2=li+li1
    4 >>> print li2
    5 [1, 2, 3, 4, 5, 6, 7, 8]
    View Code

    2)乘法:相当于同一个列表相加了n次。

    1 >>> print li1*2
    2 [6, 7, 8, 6, 7, 8]
    View Code

    3)(not)in运算:即包含与否的运算,判断某个值是否为列表的元素。

    1 >>> print 2 in li
    2 True
    3 >>> print 10 in li2
    4 False
    5 >>> print 10 not in li2
    6 True
    View Code

    4)遍历:逐一访问列表里的各个元素通过for循环来依次取出列表的各个元素项的值。

     1 >>> li1=[1,2,3,4,5]
     2 >>> li=li1*3
     3 >>> i=0
     4 >>> for val in li:
     5  print 'li[%d]'%(i),val
     6  i+=1
     7 (空格,Enter键运行)
     8 li[0] 1
     9 li[1] 2
    10 li[2] 3
    11 li[3] 4
    12 li[4] 5
    13 li[5] 1
    14 li[6] 2
    15 li[7] 3
    16 li[8] 4
    17 li[9] 5
    18 li[10] 1
    19 li[11] 2
    20 li[12] 3
    21 li[13] 4
    22 li[14] 5
    View Code

    列表的解析:[val_expr for val in list_name],其中:

    val_expr:是变量val的运算表达式,val用于存储for每次从list_name列表取出的元素的值,用每一个val_expr的值作为构建新列表的元素项。

    练习:用列表求1~9的立方。

    1 >>> li=range(1,10)
    2 >>> print li
    3 [1, 2, 3, 4, 5, 6, 7, 8, 9]
    4 >>> li1=[x**3 for x in li]  #列表的解析
    5 >>> print li1
    6 [1, 8, 27, 64, 125, 216, 343, 512, 729]
    View Code

    二、相关函数

        列表的相关函数很多,可以通过help函数查看。现在选取几个比较重要的函数举例,加以理解。
    1)len()函数:是Python内建函数不属于任何数据类型,一般序列型的数据都可以通过它来测得其长度。
    1 >>> li=range(1,11)
    2 >>> print li
    3 [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]
    4 >>> print len(li)
    5 10
    View Code

    2)count()函数:统计列表里某元素项出现的次数。

    1 >>> li=range(1,3)
    2 >>> li2=li*3
    3 >>> print li2
    4 [1, 2, 1, 2, 1, 2]
    5 >>> print li2.count(li2[2])
    6 3
    7 >>> print li2.count('a')
    8 0
    View Code

    3)insert函数:将对象添加到列表指定位置,列表里的元素顺序后移。

     1 >>> li=[]
     2 >>> li=range(1,11)
     3 >>> print li
     4 [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]
     5 >>> li.insert(5,10)
     6 >>> print li
     7 [1, 2, 3, 4, 5, 10, 6, 7, 8, 9, 10]
     8  
     9 >>> li.insert(6,li1)
    10 >>> li
    11 [1, 2, 3, 4, [5, 6, 7, 8, 9], [5, 6, 7, 8, 9]]
    View Code

    4)append函数:将对象添加到列表尾部位置。

    例一:插入对象为列表里单个元素。
    >>> li=[]
    >>> li1=range(1,5)
    >>> for x in li1:
     li.append(x)
     
     
    >>> print li
    [1, 2, 3, 4]
    View Code

    例二:插入对象为列表。

     1 >>> li=[]
     2 >>> li1=range(1,5)
     3 >>> for x in li1:
     4  li.append(x)
     5  
     6  
     7 >>> print li
     8 [1, 2, 3, 4]
     9 >>> li1=range(5,10)
    10 >>> li.append(li1)
    11 >>> print li
    12 [1, 2, 3, 4, [5, 6, 7, 8, 9]]
    View Code

    5)extend函数:将一个列表是所有元素以个体的方式添加到列表的尾部。

    1 >>> li1=range(1,6)
    2 >>> li2=range(6,10)
    3 >>> print li1,'
    ',li2
    4 [1, 2, 3, 4, 5]
    5 [6, 7, 8, 9]
    6 >>> li1.extend(li2)
    7 >>> li1
    8 [1, 2, 3, 4, 5, 6, 7, 8, 9]
    View Code

    6)remove函数:删除列表的第一次出现的指定元素。

    1 >>> li=range(1,4)*3
    2 >>> print 'li',li
    3 li [1, 2, 3, 1, 2, 3, 1, 2, 3]
    4 >>> print 'li=',li
    5 li= [1, 2, 3, 1, 2, 3, 1, 2, 3]
    6 >>> li.remove(2)
    7 >>> print 'li=',li
    8 li= [1, 3, 1, 2, 3, 1, 2, 3]
    View Code
    7)pop函数:删除列表指定位置的元素或者列表的尾部元素。
     1 >>> li=range(1,4)*3
     2 >>> print 'li=',li
     3 li= [1, 3, 1, 2, 3, 1, 2, 3]
     4 >>> li.pop()
     5 3
     6 >>> li
     7 [1, 3, 1, 2, 3, 1, 2]
     8 >>> li.pop(3)
     9 2
    10 >>> li
    11 [1, 3, 1, 3, 1, 2]
    View Code

    练习:

    1、用函数实现剔除表里重复的元素
    i)remove函数实现:
     1 >>> li='www.baidu.com'*10 
     2 >>> li=list(li) 
     3 >>> li.sort() 
     4 >>> i=0 
     5 >>> for s in li: 
     6 while li.count(s)>1: 
     7 li.remove(s) 
     8 i+=1 
     9 
    10 
    11 >>> print li 
    12 ['.', 'a', 'b', 'c', 'd', 'i', 'm', 'o', 'u', 'w']
    View Code

    ii)pop函数实现:

     1 li=[1,1,1,2,2,2,3,3,3,3,4]
     2 length=len(li)
     3 print li
     4 pos=length-1
     5 while pos>=0:
     6     r=li.count(li[pos])
     7     if r>1:
     8         i=0
     9         while i<r-1:
    10             li.pop(pos)
    11             pos=pos-1
    12             i=i+1
    13     else:
    14         print 'Over!'
    15     pos-=1
    16 print li
    View Code

    iii)extend函数和append函数实现(有兴趣的同学可以尝试尝试)

    2、去除二维列表[],二维变一维。
    i)嵌套循环实现:isinstance函数可以判定数据的类型。
     1 li=[1,2,4,range(1,4),5,range(1,4),6]
     2 print li
     3 k=0
     4 for li1 in li:
     5     if isinstance(li1,list):
     6         j=0
     7         for li2 in li1:
     8             li.insert(k+j,li2)
     9             li.remove
    10             j=j+1
    11         del li[k+j]
    12     k=k+1
    13 print li
    View Code

    ii)单循环实现:

    1 li=[1,2,4,range(1,4),5,range(1,4),6]
    2 print li
    3 b=[]
    4 for i in li:
    5     if isinstance(i,list):
    6         b.extend(i)
    7     else:
    8          b.append(i)
    9 print(b)
    View Code

    三、元组(Tuple)

        元组的结构,访问,使用方法和列表基本一致,区别有二:
        i)使用圆括号()将各个数据项括起来;
        ii)元组的元素值不可修改。
    实例:
    1 >>> t=tuple(range(1,10))
    2 >>> print t
    3 (1, 2, 3, 4, 5, 6, 7, 8, 9)
    4 >>> print t[3]
    5 4
    6 >>> print t[2:8]
    7 (3, 4, 5, 6, 7, 8)
    View Code

     四,小结

         本文介绍了Python的列表的基本概念,相关函数及其用法举例,还初步介绍了元组知识,通过练习,应该对Python的列表知识有一个初步的认识。

  • 相关阅读:
    Mongodb $in $or 性能比较
    c# mongo 数组里对象更新
    C# mongodb $set或$addToSet批量更新很慢原因
    docker 使用
    Ubuntu 下更简单的防火墙 Uncomplicated Firewall
    Docker 介绍及安装
    linux 内核分析工具 Dtrace、SystemTap、火焰图、crash等
    golang 中处理大规模tcp socket网络连接的方法,相当于c语言的 poll 或 epoll
    golang 对struct进行Serialize的方法,即将存取二进制文件到struct的方法
    golang 中创建daemon的方法
  • 原文地址:https://www.cnblogs.com/zhangbc/p/3856442.html
Copyright © 2020-2023  润新知