zoukankan      html  css  js  c++  java
  • .Net程序员之Python基础教程学习----列表和元组 [First Day]

           一. 通用序列操作:

         其实对于列表,元组 都属于序列化数据,可以通过下表来访问的。下面就来看看序列的基本操作吧.

        1.1 索引:

                  序列中的所有元素的下标是从0开始递增的. 如果索引的长度的是N,那么所以的范围是-N~N-1之间,超过这个范围就会提示 IndexError:  index out of range

    >>> greeting ='Hello world'
    >>> print greeting
    Hello world
    >>> print greeting[0],greeting[-1]
    H d

             1.2 分片:

                A.简单的分片:
           分片是基于索引基础上的,可以理解为取一定区域的数据,和C#中的substring差不多,以及C#Linq提供的skip()和take()方法.

                   Note:[A:B] A,B分别对应索引的下标,取值区域是[A,B)(学过数学的都知道不包含B). 注意意见是B必须大于A,否则输出为空,那么问题里了为何web[9:-1]有数据,请仔细想一想,其实-1的下标数据等价于m的下标12,12>9所以有数据. 那么对于web[9:-5] 就悲剧了.    

    >>> web ='www.baidu.com'
    >>> print web[4:9] #4对于的b
    baidu
    >>> print web[9:-5] # 
    
    >>> print web[9:-1] #9对应的第二个'.' -1对应的m .co

          B.等差数列形式的分片:

            默认情况下是按照下标间隔为1的时候,进行获取的,其实可以通过第三个参数来进一步分割.[A:B:间隔数], 10个数字没两个取1次.

      

    >>> number =[1,2,3,4,5,6,7,8,8,10]
    >>> print number[0:10:2]
    [1, 3, 5, 7, 8]
    >>> print number[::-2]
    [10, 8, 6, 4, 2]
    >>> print number[::2]
    [1, 3, 5, 7, 8]

       1.3 序列相加:

         同类型的可以想加,不同类型的会报错Type Error

    >>> [1,2,3] + [4,5]
    [1, 2, 3, 4, 5]
    >>> [1,2,3] +['hello']
    [1, 2, 3, 'hello']
    >>> [1,2,3]+'hello'
    
    Traceback (most recent call last):
      File "<pyshell#41>", line 1, in <module>
        [1,2,3]+'hello'
    TypeError: can only concatenate list (not "str") to list
    >>> 

         1.4 乘法:
         觉得Python的乘法很有意思,可以理解为对现有的数据的一种多个Copy.

        

    >>> [1]*10
    [1, 1, 1, 1, 1, 1, 1, 1, 1, 1]
    >>> 'New '*10
    'New New New New New New New New New New '

          1.5 有用方法.

         通过in可以Check元素是否存在,max,min,len,count分别获取最大值,最小值,长度,包含数量

        

    >>> number =[1,2,2,3,3,4,5,7]
    >>> print 'Max Number:' + str(max(number))
    Max Number:7
    >>> print '2的数量是:' + str(number.count(2))
    2的数量是:2
    >>> print 'number列表的长度是:' + str(len(number))
    number列表的长度是:8

            二. 列表.
      

             列表可以理解为C语言中的链表.或者C#中的List<Object>,列表可以实现上面出现的通用序列号操作,可以对列表进行增,删,改,查,排序等方法

        2.1 列表的基础  

    >>> print list('123') #功过【】可以将字符串转换为列表
    ['1', '2', '3']
    >>> list1=[1,2,3] # 通过[]声明列表
    >>> list2 = list(123) #123是整形,不存在索引,所以转换的时候报错了。
    
    Traceback (most recent call last):
      File "<pyshell#53>", line 1, in <module>
        list2 = list(123)
    TypeError: 'int' object is not iterable

              2.2 列表的基本操作
            A 增,删,改

    >>> numbers =[1,2,3,4,5]
    >>> numbers[0]=5; #修改
    >>> print numbers
    [5, 2, 3, 4, 5]
    >>> numbers.remove(5) #删除value值为5的
    >>> print numbers
    [2, 3, 4, 5]
    >>> del numbers[0] #删除第一个元素
    >>> print numbers
    [3, 4, 5]
    >>> numbers.append(7) #在尾部添加一个元素
    >>> print numbers
    [3, 4, 5, 7]

                 B 分片赋值【神奇的分片操作】

         整体替换
        

    >>> Greeting= [1,2,3,4,5]
    >>> Greeting[1:] = [0,0]
    >>> Greeting
    [1, 0, 0]

                替换区间      

    >>> Greeting= [1,2,3,4,5]
    >>> Greeting[1:2]=[0,0,0]
    >>> Greeting
    [1, 0, 0, 0, 3, 4, 5]

                批量添加,用[0,0,0]替换[]        

    >>> Greeting=[1,2,3,4,5]
    >>> Greeting[1:1]=[0,0,0]
    >>> Greeting
    [1, 0, 0, 0, 2, 3, 4, 5]

         批量删除,用[]替换[2,3,4]   

    >>> Greeting=[1,2,3,4,5]
    >>> Greeting[1:4]=[]
    >>> Greeting
    [1, 5]

           Note:对于种种操作其实都可以理解为一个替换。

           2.3 列表的方法.  

    >>> Number =[1,2,3,4,5]
    >>> Number.extend([6,7,8])  #添加一个列表,必须是列表
    >>> Number
    [1, 2, 3, 4, 5, 6, 7, 8]
    >>> Names =['Frank','Lock','Vincent','Tingna']
    >>> Names.index('Lock')  #通过Index取下标
    1
    >>> Names.insert(2,'Hardy')
    >>> Names
    ['Frank', 'Lock', 'Hardy', 'Vincent', 'Tingna']
    >>> Names.pop()  #最有一个元素删除
    'Tingna'
    >>> Names
    ['Frank', 'Lock', 'Hardy', 'Vincent']
    >>> Names.pop(0)  #踢出第一个元素
    'Frank'
    >>> Names
    ['Lock', 'Hardy', 'Vincent']
    >>> Names.reverse()  #反序
    >>> Names
    ['Vincent', 'Hardy', 'Lock']
    >>> Names.sort() #从小到达
    >>> Names
    ['Hardy', 'Lock', 'Vincent']
    >>> Names.sort(key=len) #通过长度排序
    >>> Names
    ['Lock', 'Hardy', 'Vincent']
    >>> Names.sort(reverse=True) #从大到小
    >>> Names
    ['Vincent', 'Lock', 'Hardy']

            三. 元组不可变序列

         通过()号声明,与list的区别在于一旦声明后不可变.
        

    >>> tuple1 = (1,2,3)
    >>> tuple1
    (1, 2, 3)
    >>> tuple(list('hello'))
    ('h', 'e', 'l', 'l', 'o')
    >>> 

            四. 总结
        

         本章总结了Python基础教程里面的列表和元组,其实整体来说和.net区别不算太大.比如奇妙的切片操作其实就是简化了.net里面的addrang,revomeall这些方法. 确实正如书里面所说Python可以用100行代码做到C语言1000行代码所需要完成的事情.
            
         好了洗洗睡睡了.求明天公司年会能抽中Iphone土豪金大奖,哈哈哈.
    [利用一个月的下班之余看完Python基础教程,完成基础教程学习博客系列.加油!]
  • 相关阅读:
    python Exception中的raise、assert
    python循环语句与其他编程语言不同之处
    【转】最大似然估计
    尝试发表代码
    奇异分解(SVD)
    Python学习笔记3-string
    梯度下降法
    前后端分离
    Trie树
    HashMap的工作原理以及代码实现,为什么要转换成红黑树?
  • 原文地址:https://www.cnblogs.com/FourLeafCloverZc/p/4245241.html
Copyright © 2011-2022 走看看