Python学习日记——列表的骚操作

目录

1. 列表概述

1.1 什么是列表

1.2 创建列表

2. 处理列表元素

2.1 访问列表元素

2.1.1 下标索引

2.1.2 切片

2.2 列表元素的增删改查(方法)

2.2.1 增

2.2.2 删

扫描二维码关注公众号,回复: 13337194 查看本文章

 2.2.3 改

 2.2.4 查

2.3 列表的运算

2.4 列表的嵌套

2.4.1 二维列表

3. 列表推导式


1. 列表概述

1.1 什么是列表

       关于列表,就是所有元素的一个集合。包括数字,字符串,字典,列表 and so so......

       在Python中,列表元素下至一两个,上至百万个,功能强大,处理过程明显易懂。

       列表是一个有序集合,元素的顺序按照添加的事件前后进行排序。

1.2 创建列表

  1. 直接使用 “[ ]” 创建列表;
  2. 使用函数“list()”。
>>> a_list = [1,2,3,4,5]
>>> b_list = list("6,7,8,9,10".split(","))
>>> a_list
[1, 2, 3, 4, 5]
>>> b_list
['6', '7', '8', '9', '10']

2. 处理列表元素

2.1 访问列表元素

2.1.1 下标索引

我们通常使用列表的下标索引来进行访问列表元素,在使用下标索引的时候要注意以下几个问题:

  1. 列表的第一个元素下标索引为 0 ,依此类推;
  2. 列表的下标索引可以是负值。即,最后一个列表元素索引值为 -1 ,依此类推; 
>>> a_list = [1,2,3,4,5]
>>> a_list [0]
1
>>> a_list [-1]
5
>>> length = len(a_list)
>>> a_list [length - 1]
5

 Tips:获取列表长度可以使用 “ len() ” 函数,该函数返回值为列表的元素个数。

2.1.2 切片

       我们对列表中的部分元素进行处理,python称之为切片!而要创建切片,我们需要三个下标索引。初始索引,默认为 0 ;终止索引,默认为 -1 ;步长,默认为 1 。

>>> a_list = list(range(0,6))
>>> a_list
[0, 1, 2, 3, 4, 5]
>>> a_list[::]
[0, 1, 2, 3, 4, 5]
>>> a_list[1:-2]
[1, 2, 3]
>>> a_list[0::2]
[0, 2, 4]

       我们还可以使用for循环来遍历切片元素。

>>> a_list = list(range(0,20))
>>> a_list
[0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19]
>>> for num in a_list[1:15:2]:
        square = num ** 2  #进行乘方运算
        print(square,end = ' ')


1 9 25 49 81 121 169
#1 3 5  7  9  11  13 

Tips:range()函数和列表切片一样,有三个参数:初始值,终止值,步长。其作用是生成一系列的数。注意,生成的这一系列数中,起始于起始值,但终止于终止值的前一个数,使用时应当引起注意!  

2.2 列表元素的增删改查(方法)

2.2.1 增

  1. alist.append(item):向alist这个列表中添加一个数据类型不限的变量——item。该方法只能添加单个变量。
  2. alist.extend([ ]):该方法的参数是一个可迭代对象,例如列表,新的内容会按照迭代顺序依次添加到原列表最后一个元素的后面。
  3. 其他方法:切片方法......
  4. alist.insert( , ):该方法要求输入两个参数,第一个参数为列表索引,即插入数据的位置;第二个参数为想要插入列表的数据。在插入位置的原列表元素的正索引值依次+1。该方法只能添加单个变量。
    >>> alist = list(range(1,10,2))
    >>> alist
    [1, 3, 5, 7, 9]
    
    >>> alist.append(11)
    >>> alist
    [1, 3, 5, 7, 9, 11]
    >>> alist.append('11')
    >>> alist
    [1, 3, 5, 7, 9, 11, '11']
    
    >>> blist = [13, 15, 17]
    >>> alist.extend(blist)
    >>> alist
    [1, 3, 5, 7, 9, 11, '11', 13, 15, 17]
    
    >>> alist[6:] = alist[7:]
    >>> alist
    [1, 3, 5, 7, 9, 11, 13, 15, 17]
    
    >>> alist.insert(1,2)
    >>> alist
    [1, 2, 3, 5, 7, 9, 11, 13, 15, 17]

2.2.2 删

  1. alist.remove():参数为想要移除的元素;注意:1.若列表中存在多个匹配的元素,remove方法只会删除第一个;2.若列表中没有匹配的对象,程序会报错:valueerror;

  2. alist.pop():参数为列表下标索引;返回值为删除的元素;

  3. alist.clear():无参数,清空列表元素;

  4. del alist[下标索引]:删除下标索引处元素,无返回值。

    >>> alist.remove(17)
    >>> alist
    [1, 2, 3, 5, 7, 9, 11, 13, 15]
    
    >>> alist.pop(-1)
    15
    >>> alist
    [1, 2, 3, 5, 7, 9, 11, 13]
    
    >>> del alist[-1]
    >>> alist
    [1, 2, 3, 5, 7, 9, 11]
    
    >>> alist.clear()
    >>> alist
    []
    

 2.2.3 改

  1. alist[下标索引] = 新的值:
  2. 切片方法;
  3. 列表的排序:从小到大排序:alist.sort();有两个参数,key:指定一个用于比较的函数(lambda函数),默认为None,reverse:用于指定排序结果是否反转默认为False;
  4. 列表的反转:alist.reverse();
    >>> alist = [1,5,3,9,8,2,4]
    >>> alist[0] = 3
    >>> alist
    [3, 5, 3, 9, 8, 2, 4]
    
    >>> alist[4:] = [3,9,6,5]
    >>> alist
    [3, 5, 3, 9, 3, 9, 6, 5]
    
    >>> alist.sort()
    >>> alist
    [3, 3, 3, 5, 5, 6, 9, 9]
    >>> alist.reverse()
    >>> alist
    [9, 9, 6, 5, 5, 3, 3, 3]
    
    >>> alist = [3, 5, 3, 9, 3, 9, 6, 5]
    >>> alist.sort(reverse = True)
    >>> alist
    [9, 9, 6, 5, 5, 3, 3, 3]

 2.2.4 查

  1. alist.count():返回列表中参数出现的次数,参数为想要查找的对象;
  2. alist.index( , , ):返回参数的下标索引值,若有多个元素满足,则返回第一个元素下标索引值;第一个参数为想要查找的对象,第二个参数为查找的起点,第三个参数为查找的终点;
  3. blist = alist.copy():列表的复制,还可以使用切片方法复制,blist = alist[:],这种方法在python中称之为浅拷贝,即shallow copy。
    >>> alist = [3, 5, 3, 9, 3, 9, 6, 5]
    >>> alist.count(3)
    3
    
    >>> alist.index(9)
    3
    
    >>> clist = alist
    >>> blist = alist.copy()#shallow copy
    >>> alist
    [3, 5, 3, 9, 3, 9, 6, 5]
    >>> blist
    [3, 5, 3, 9, 3, 9, 6, 5]
    >>> clist
    [3, 5, 3, 9, 3, 9, 6, 5]
    >>> alist.clear()
    >>> alist
    []
    >>> blist
    [3, 5, 3, 9, 3, 9, 6, 5]
    >>> clist
    []

2.3 列表的运算

1. 加法运算:即列表的拼接

2. 乘法运算:即列表的复制

>>> a = [1, 2, 3]
>>> b = [4, 5, 6]

>>> c = a + b
>>> c
[1, 2, 3, 4, 5, 6]

>>> c = a * 3
>>> c
[1, 2, 3, 1, 2, 3, 1, 2, 3]

2.4 列表的嵌套

2.4.1 二维列表

1. 创建一个二维列表

>>> a = []
>>> b = []
>>> for i in range(3):
...     a.append(b)
... 
... 
>>> a
[[], [], []]

对二维列表复制的时候,应当注意使用深拷贝

>>> a = [[1, 2, 3],
...      [4, 5, 6],
...      [7, 8, 9]]#ctrl + j可以在交互界面换行

>>> import copy
>>> b = copy.copy(a)
>>> c = copy.deepcopy(a)
>>> b
[[1, 2, 3], [4, 5, 6], [7, 8, 9]]
>>> c
[[1, 2, 3], [4, 5, 6], [7, 8, 9]]

>>> a[1][1] = 0
>>> b
[[1, 2, 3], [4, 0, 6], [7, 8, 9]]
>>> c
[[1, 2, 3], [4, 5, 6], [7, 8, 9]]

3. 列表推导式

由于列表推导式在python中,是以更加底层的语言——C语言来运行的,因此,列表推导式的效率通常比循环语句快一倍左右。

列表推导式本质是用一个或者多个循环生成列表元素,创建出一个列表。

其语法格式为:

[expression for target1 in iterable1 if condition1
            for target2 in iterable2 if condition2
                ...           ...          ...
            for targetn in iterablen if conditionn]

expression:即最终保存到列表中的列表元素的变量名;

target1~n:循环体循环n次得出的结果;

iterable1~n:循环体的对象;

condition1~n:判断循环体得到的结果是否满足输出条件。

举例说明:

>>> _ = [ [x, y] for x in range(10) if x % 2 == 0
...              for y in range(20) if y % 5 == 0]
          
#等价于:

>>> _ = []
>>> for x in range(10):
...     if x % 2 == 0:
...         for y in range(20):
...            if y % 5 == 0:
...                 t = [x, y]
...                 _.append(t)
... 
... 

>>> _       
[[0, 0], [0, 5], [0, 10], [0, 15], [2, 0], 
 [2, 5], [2, 10], [2, 15], [4, 0], [4, 5], 
 [4, 10], [4, 15], [6, 0], [6, 5], [6, 10], 
 [6, 15], [8, 0], [8, 5], [8, 10], [8, 15]]#格式应该是在一行中

到此为止,列表这块内容差不多就结束了。其中固然还有很多内容没有涉及到,今后进行补充......

See you......! ^_^ !

猜你喜欢

转载自blog.csdn.net/m0_61357071/article/details/120809603