基本对象类型(一)

python学习网 2018-08-28 06:29:02

列表(list)

  • 列表的定义与赋值     
  • 列表的基本操作(增删改查)    
问题的引入:在对数据进行操作时,可能会遇到一组数据,如何对这些数据进行操作预处理?
1 name0='wuchao'
2 name1='jixin'
3 name2='xiaohu'
4 name3='sanpang'
5               
View Code

 这种方法繁琐且对于数据不方便操作。

1 names='wuchao jinxing xiaohu sanpangn‘’ 

这种存数据存在的问题:数据不存在关联并且不方便记忆。

在python语言中引入列表这种数据类型,方便用户对大量数据进行批量存储和操作。

列表可以存一组数据,并且数据之间的类型可以不一致,不同元素之间用逗号链接起来,用方括号进行定义。例如可以定义如下的列表a:

 a=['wuchao','jixin','xiaohu','sanpang']

 

此列表中含有四个元素(item)。某个列表确定之后下面就是要对列表进行一定的操作,可以对整个列表进行整体操作,也可以对列表中的某个元素进行操作,那么怎么确定列表中某个元素呢?

没错,根据某个元素(item)在列表中的位置。在python中这种位置叫作index(索引)。对于索引有两点需要注意 ①索引有正负列表中第一个元素从0开始

 

下面就学习下,对列表的一些基本操作,具体包括(增删改查):

1、 查询列表中的元素 

(1)可以通过索引查询列表中的元素:这里面涉及到一个概念叫作切片   (切片:就是选取列表中的部分元素或全部元素的一种操作)

   下面举例说明,定义的列表a如下:

a=['wuchao','jinxing','xiaohu','sanpang']

   切片(slice)的手法如下 a[ start:end:step]      start:表示开始的索引值   end:表示结束的索引值(实际并不包含) step:切片的步长,step为正数时从左往右;为负数时从右往左

  举例代码如下:

>>>a=['wuchao','jinxing','xiaohu','sanpang']
>>> a[1:4]  #第一个元素到第三个元素
['jinxing', 'xiaohu', 'sanpang']
    
 >>> a[1:]    #从第一个元素到最后一个元素
      ['jinxing', 'xiaohu', 'sanpang']
 >>> a[1::2]  #从左到右,隔一个取一个
       ['jinxing', 'sanpang']
 >>> a[-1::-2]  #从右往左 步长为2
        ['sanpang', 'jinxing']

(2)当只知道元素的值,而不知道元素在列表中的索引值(index)的时候,可以使用index()获取元素的索引                                      

     array.index(x)          #返回元素在列表中第一次出现的索引值

    Return the smallest i such that i is the index of the first occurence of  x in the array.

 如何取第二次出现的值,先取第一次出现的索引值,然后切片
 >>> a.index('jinxing')
         1
(3)计算列表中某个元素出现的次数 count()
array.count(x) #计算列表中元素出现的次数,可以判断某个元素是否在列表中查次数
    Return the number of occurrences of x in the array.
 >>> a.count('zhou')
      0
>>> a.count('jinxing')
      1
>>
(4)判断某个元素x是否是列表中值得方法
方法一: 查询元素x在列表中出现的次数,若不为零则该元素在列表中
方法二: x in a #item in array 即可进行判断,如果返回值为True则为列表中的元素,否则不为列表中的元素
 >>> a.count('zhou')
       0

 >>> 'zhou' in a
    False

 2、修改列表中的元素 

修改列表中的方法直接对列表中的某个元素或切片直接赋值即可
 >>> a[0]=1                #直接修改列表中某个元素的值
>>> a
       [1, 'jinxing', 'xiaohu', 'sanpang']

  >>> a[1:3]=['zhou','hua']   #修改列表中某几个元素的值,注意切片方法的使用
 >>> a
        [1, 'zhou', 'hua', 'sanpang']

3、删除列表中的元素
删除列表中的元素有三种方法:remove(x)、pop(index)、del()
(1)
array.remove(x) #直接删除内容,此种方法需要知道元素的具体值
Remove the first occurrence of x from the array
>>> a.remove('zhou')       #删除zhou
>>> a [1, 'hua', 'sanpang']

  (2)array.pop([i]) #根据索引删除元素,索引可有可无,默认为-1,删除的元素返回一个

Removes the item with the index i from the array and returns it. (并返回一个值)

The optional argument defaults to -1, so that by default the last item is removed and returned.
>>> a.pop()    #默认删除最后一个元素
sanpang'         #返回的删除值
>>> a [1, 'hua']
>>> a.pop(1) #删除第二个元素 'hua' #返回的删除值 >>> a [1]

 (3)del()

4、增加列表中的元素
增加列表中的元素有三种方法:
append(x) insert(i,x) extend()

(1)array.append(x) #在数组的最后插入一个元素
 Append a new item with value x to the end of the array.
>>> a
      [1]
>>> a.append('xuepeng')  #把xue添加到列表的末尾
>>> a
                                       [1, 'xuepeng']
(2)array.insert(i, x)   #在i的位置之前插入一个元素x
Insert a new item with value x in the array before position i.
Negative values are treated as being relative to the end of the array.

(3)
array.extend(iterable) #在列表的末尾添加一组 数组 extend:延伸

Append items from iterable to the end of the array.

If iterable is another array, it must have exactly the same type code; if not, TypeError will be raised.
 If iterable is not an array,
it must be iterable and its elements must be the right type to be appended to the array
 [1, 'xuepeng']
>>> b=[1,2]            #列表b
>>> a.extend(b)        #在列表a的末尾添加列表b
>>> a
  [1, 'xuepeng', 1, 2]

 5、其它的操作(排序、逆转)                      

(1)逆转(reverse)

            array.reverse() #翻转列表中元素的顺序

        Reverse the order of the items in the array.
   >>> a
           [2, 1, 'xuepeng', 1]
 >>> a.reverse()#翻转列表
 >>> a
           [1, 'xuepeng', 1, 2]
(2)排序(sort)
    array.sort(*, key=None, reverse=False)  #排序,默认从小到大 问题如何从大到小,当reverse为真的时候从大到小排          

This method sorts the list in place.using only < comparisons between items. Exceptions are not suppressed - if any comparison operations fail,
the entire sort operation will fail (and the list will likely be left in a partially modified state)
     everse is a boolean value. If set to True, then the list elements are sorted as if each comparison were reversed.
>>> c=[11,22,11,111,234]       #定义的列表
>>> c.sort()                            #对列表进行排序,默认从小到大
>>> c [11, 11, 22, 111, 234] #排序完成
>>> c=[11,22,11,111,234]         #定义的列表
>>> c [11, 22, 11, 111, 234] >>> c.sort(reverse=True) #对列表进行排序,注意从大到小 >>> c [234, 111, 22, 11, 11]

 

 

 小结:列表就是一系列元素的合集,要注意元素的索引值(index),对部分元素进行操作,要注意切片(slice)的操作。

          一系列的内置函数要熟记,整理如下表格:

 

功能 操作
查找元素  切片 slice a[ :: ]
判断某个元素是否为列表中的值 ①count(x) ② x in a
判断列表中某个元素出现的次数 count()
知道某个元素,求其索引值  index(value)
   
增加元素 append(x) :在列表的末尾增加x
insert(i,x) :在索引i之前添加x
extend(b)  :b为数组,把数组b添加到数组a之后
   
修改元素 修改单个元素: a[i]=x
修改多个元素  :切片进行操作
   
删除元素 remove(x):直接删除某个具体的元素x
pop(i)       :根据索引删除元素
del()   :直接删除
   
对元素进行排序 sort(reverse=False)  :默认从小到大进行排序;从大到小进行排序改变reverse
   
逆转列表 reverse()       :把列表中的元素改变顺序

 

 

 

 

 

 

 

 

             

阅读(1882) 评论(0)