Python 学习笔记(二) 列表和元组


Python 包含6种内建序列,列表和元组是其二.

2.1  列表和元组的主要区别:

                 列表可以修改,元组不能.

       序列举例 :

        

>>>>edward = ['Edward Gumby',42]

       同时,序列也可以包含其它序列:

      

>>> john = ['John Smith',50]
>>> database= [edward,john]
>>> database
[['Edward Gumby', 42], ['John Smith', 50]]

2.2 通用序列操作

    

     所有序列都可以进行某些特定的操作,包括索引,分片,加,乘以及检查某个元素是否属于序列的成员等.


2.2.1 索引
    

>>> greeting='hello'
>>> greeting[0]

索引从后往前计数时,最后一个元素是-1 ,倒数第二个元素是-2..

2.2.2 分片


  通过分片可以访问一定范围内的元素

 

>>> tag = '012345hello word54321'
>>> tag[6:16]
'hello word'

   分片通过冒号相隔的两个索引来实现,  第一个索引是需要提取的第一个元素的编号, 后一个索引是剩下的不提取的第一个元素的编号.

  

   当要取最后一个元素时,后面的索引值为最后一个元素的索引+1即可.

 例如:

    

>>> numbers=[1,2,3,4,5,6,7,8,9,10]
>>> numbers[7:10]
[8, 9, 10]

    这里10对应的第11个元素其实是不存在的.

   从头末未开始计数:

   

>>> numbers[-3:-1]
[8, 9]

    这里,第一个索引值必须在第二个索引值左边,否则返回为空


   步长:

  

>>> numbers[0:10:1]
[1, 2, 3, 4, 5, 6, 7, 8, 9, 10]
>>> numbers[0:10:2]
[1, 3, 5, 7, 9]

  如例子所示,如果步长大于1,则会跳过某些数字.


  捷径: 每4个数字提取出一个出来

    

>>> numbers[::4]
[1, 5, 9]

2.2.3序列相加


  很简单:

  

>>> [1,2,3]+[4,5,6]
[1, 2, 3, 4, 5, 6]
>>> 'hello,'+'word'
'hello,word'
>>> [1,2,3] + 'word'

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

直接 ' + ' 即可将序列连接 . 显然, 列表和字符串是不能相加的.


2.2.4 乘法


  例子:

>>> 'python'*5
'pythonpythonpythonpythonpython'
>>> [23]*5
[23, 23, 23, 23, 23]


 初始化一个长度为10的列表

  

sequence = [None] * 10

2.2.5 成员资格


   使用in 关键字检查一个值是否在序列中, 将返回一个布尔值.

  

>>> permissions ='rw'
>>> 'w' in permissions
True
2.2.6长度 最小值和最大值.  


    内建函数 len ,max ,min 返回序列中包含元素的个数,最大值和最小值

  

>>> len (numbers)
10
>>> max(numbers)
10
>>> min(numbers)
1

2.3  Python的苦力 :列表


  2.3.1 list 函数

  

   list 可以将序列转化为列表

实例:

 

>>> list('Hello')
['H', 'e', 'l', 'l', 'o']

2.3.2 基本的列表操作

        1 改变列表: 元素赋值: 

         

>>> x=[1,1,1]
>>> x[1]=2
>>> x
[1, 2, 1]

         2 删除元素

         使用del语句来实现

        

>>> names = ['a','b','c']
>>> del names[1]
>>> names
['a', 'c']
          3 分片赋值

          

>>> name = list ('Perl')
>>> name
['P', 'e', 'r', 'l']
>>> name[2:] = list('ar')
>>> name
['P', 'e', 'a', 'r']

分片赋值时, 可以适用于原序列不等长的序列降分片替换:

>>> name = list ('Perl')
>>> name [1:]= 'yhton'
>>> name
['P', 'y', 'h', 't', 'o', 'n']

用来插入也是可以的:

      

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

用来删除也是可以的

>>> numbers[1:4]=[]
>>> numbers
[1, 5]

2.3.3列表方法

   1 append

    用于在列表末尾追加新的对象

    

>>> lst = [1,2,3]
>>> lst.append(4)
>>> lst
[1, 2, 3, 4]

   2 count 

     count 用于统计某个元素在列表中出现的次数

    

>>> x= [[1,2],1,2,[1,2]]
>>> x.count([1.2])
0
>>> x.count([1,2])
2
   3   extend 


  在列表末尾一次性追加另一个序列中的多个值 

  

>>> a= [1,2,3]
>>> b=[4,5,6]
>>> a.extend(b)
>>> a
[1, 2, 3, 4, 5, 6]

  虽然也可以使用a=a+b 这样的方法,不过效率上要低很多.


   4 index

     从列表中找出某个值的第一个匹配项的索引位置. 

        

>>> knight = ['a','b','c','d']
>>> knight.index('b')
1

   5 insert

    

>>> numbers= [1,2,3,4,5,6,7]
>>> numbers.insert(3,'four')
>>> numbers
[1, 2, 3, 'four', 4, 5, 6, 7]
    6 pop 

       移除列表中一个元素(默认是最后一个),并返回该元素的值

       

>>> x= [1,2,3]
>>> x.pop()
3
>>> x.pop(0)
1
>>> x
[2]

   7 remove

     移除列表中某个值的第一个匹配项

         

>>> x=['a','b','c','d','c']
>>> x.remove('c')
>>> x
['a', 'b', 'd', 'c']

     值得注意的是,remove是一个没有返回值的原位置改变方法

   8 reverse 

      将列表中的元素反向存放

     

>>> x
['a', 'b', 'd', 'c']
>>> x.reverse()
>>> x
['c', 'd', 'b', 'a']

 9 sort 

 用于在原位置对列表进行排序. 

 

>>> x
['c', 'd', 'b', 'a']
>>> x.sort()
>>> x
['a', 'b', 'c', 'd']

 如果想不改变 x ,得到x的排序序列, 那么则需要用 y 来保存原始x的副本,再对y进行sort 

   y = x[:]

  y.sort();

    调用x[:]是得到了包含x所有元素的分片


注意:

      使用 y= x 这种方法是没用的, 他只是使 y ,和 x 指向同一个列表而已.



  另一个获取已排序列表的方法:sorted

>>> x=[4,2,6,1,7,9]
>>> y= sorted(x)
>>> x
[4, 2, 6, 1, 7, 9]
>>> y
[1, 2, 4, 6, 7, 9]

10 高级排序

   按特定的方式排序 . 将sort中加cmp函数,  这点与c++ 中的方法一样 ,以后再说.


2.4 元组 : 不可变序列

      

     元组与列表一样,也是一种序列.唯一不同的是元组不能修改.  创建元组的方法很简单, 用逗号分隔了一些值,那么就自动创建了元组.

   

>>> 1,2,3
(1, 2, 3)
  

   实现包含一个值的元组: 后面加个逗号

   

>>> 42,
(42,)

2.4.1 tuple 函数

     

     tuple 函数与list 函数功能基本一样: 以一个序列为参数将其转换成元组.

  

  

>>> tuple([1,2,3])
(1, 2, 3)
>>> tuple('abc')
('a', 'b', 'c')

2.4.2 基本元祖操作


        除了创建和访问元组外 ,也没有太多其他操作,可以参照其他类型的序列来实现

       

>>> x=1,2,3
>>> x[1]
2
>>> x[0:2]
(1, 2)
         元祖的分片还是元组 就像列表的分片还是列表一样.



小结

      序列

      成员资格

      方法

     


   

    

 

  

       

                 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值