Python 列表


2021年8月23日, Learn eTutorial
1887

在本教程中,我们将通过示例掌握 Python 列表的所有知识,包括列表的重要特性、列表创建、使用切片运算符进行列表操作、各种列表操作等等。此外,我们还将学习嵌套列表。

在 Python 的复合数据类型中,列表是最通用且最常用的数据类型。列表是一种基于序列的数据类型,它包含对象的集合。对象可以是任何类型。

Python 列表的关键特性

  • 列表的性质是可变的
  • 列表维护对象的顺序
  • 列表支持索引
  • 列表可以是异构的
  • 列表是动态的
  • 列表允许重复值
  • 列表可以嵌套

如何定义 Python 列表

在 Python 中,列表是通过将一系列元素括在方括号 [ ] 中来定义的。每个元素用逗号分隔。列表可以包含任意数量的元素,并且可以是任何类型。以下示例将帮助您理解如何在 Python 中定义列表。

空列表:不包含任何元素的列表,长度为 0。

示例:定义一个空列表

emp_list =[] 

同质列表:包含相同数据类型元素的列表。

示例:定义一个包含整数元素的同质列表

int_list =[10,20,30] 
.

异构或混合列表:包含不同数据类型元素的列表

示例:定义一个包含字符串、整数和浮点数类型元素的混合列表。

mix_list =['Tom',25,5.9] 

嵌套列表:包含另一个列表的列表。

示例:定义一个嵌套列表

Nest_List = [['Apple', 'Apricot'],['Banana','Blueberry'],"Cherry"]
 

用于访问列表项的索引和切片

与字符串一样,列表中的项可以通过索引[]运算符或切片运算符[:]来访问。我们可以将列表视为动态数组,因此索引和切片操作在 Python 列表上效果很好。

Python 列表中的索引

索引是将数字分配给列表中的项以便于访问的过程。索引始终从零开始,并且必须是整数。
Python 列表中有两种索引方式:

  • 正向索引——索引从 0 开始,并从头部到尾部正向遍历。
  • 反向索引——索引从 -1 开始,并从尾部到头部反向遍历。

为了彻底理解索引,让我们考虑示例及其可视化。‘LIST’ 是一个 Python 列表,包含元素 ‘RED’、‘BLUE’、‘GREEN’ 和 ‘PINK’。列表中的每个元素根据正向和反向索引分配一个数字,对应于其位置,如下所示。

Python Indexing
  1. 通过正向索引获取元素

    通过引用索引号,可以访问列表中的单个项。下面的代码显示了如何使用正向索引访问项。

    示例:通过正向索引获取项

    List = ['Red','Blue','Green','Pink']
    print("List[0]=",List[0])
    print("List[3]=",List[3]) 
    Output:
    List[0]= Red
    List[3]= Pink
    
  2. 通过反向索引获取元素

    Python 列表还支持反向索引以从列表尾部访问项。反向索引始终从列表末尾开始,索引为 -1。

    示例:通过反向索引获取项

    List = ['Red','Blue','Green','Pink']
    print("List[-1]=",List[-1])
    print("List[-3]=",List[-3])
    Output:
    List[-1]= Pink
    List[-3]= Blue

Python 列表中的切片

Python 列表也适用于范围切片运算符[:]。在这里,使用切片运算符,我们可以根据需要从列表中切取项目块。简而言之,我们可以使用切片运算符创建子列表。范围切片语法为

L [ m:n]

其中 L 是包含项目的列表
        m:起始索引
        n:结束索引
L[m:n] 返回从索引 m 到 n 的子列表,但不包括索引 n。
切片本身可以通过正向和反向索引以多种方式完成。切片可以通过将项目放置在索引中间来最好地表示,如下所示。

Python Indexing
  1. 通过正向索引进行列表切片

    • 形式为 :L[m:n] 的切片返回从位置 m 到 n 的子列表,但不包括索引 n。
      L = ['Red','Blue','Green','Pink','Grey']
      print("L[1:3] =",L[1:3]) 
      
      输出
      L[1:3] = ['Blue', 'Green']
      
    • 形式为 :L[:n] 的切片返回从默认起始位置到 n 的子列表,但不包括索引 n。
      L = ['Red','Blue','Green','Pink','Grey']
      print("L[:2] =",L[:2]) 
      
      输出
      L[:2] = ['Red', 'Blue']
      
    • 形式为 :L[m:] 的切片返回从位置 m 到结束索引的子列表。
      L = ['Red','Blue','Green','Pink','Grey']
      print("L[2:] =",L[2:]) 
      
      输出
      L[2:] = ['Green', 'Pink', 'Grey']

       

  2. 通过反向索引进行列表切片

    • 形式为 :L[-m:-n] 的切片返回从位置 m 到 n 的子列表,但不包括索引 n。
      L = ['Red','Blue','Green','Pink','Grey']
      print("L[-4:-2] =",L[-4:-2]) 
      
      输出
      L[-4:-2] = ['Blue', 'Green']
      
    • 形式为 :L[:n] 的切片返回从默认起始位置到 n 的子列表,但不包括索引 n。
      L = ['Red','Blue','Green','Pink','Grey']
      print("L[:-2] =",L[:-2]) 
      
      输出
      L[:-2] = ['Red', 'Blue', 'Green']
      
    • 形式为 :L[-m: ] 的切片返回从位置 m 到结束索引的子列表。
      L = ['Red','Blue','Green','Pink','Grey']
      print("L[-4:] =",L[-4:]) 
      
      输出
      L[-4:] = ['Blue', 'Green', 'Pink', 'Grey']
      

如何修改 Python 列表

使列表成为 Python 编程语言中通用数据类型的一个突出特性是“列表是可变的”。这意味着列表可以在创建后进行修改。Python 列表可以通过添加、删除或更改项目来修改。Python 提供了多种修改列表的方法。

  1. 如何替换 Python 列表中的项?

    与字符串不同,Python 列表可以通过用其他项替换现有项来修改。索引使得通过赋值运算符 = 将新项重新分配到需要更改的位置来轻松替换项。替换列表中项的两种可能方法是:

    • 单个项替换——我们只替换列表中的一个项。在下面的示例中,Red 被替换为 Yellow。
      L = ['Red','Blue','Green','Pink','Grey']
      L[0]= 'Yellow'
      print('Modified List is :',L)
      
      输出
      Modified List is : ['Yellow', 'Blue', 'Green', 'Pink', 'Grey']
      
    • 多个项替换——我们可以替换列表中的一系列项。在此实例中,Green 和 Pink 分别被替换为 Orange 和 Black。
      L = ['Red','Blue','Green','Pink','Grey']
      L[2:4]= ['Orange','Black']
      print('List after modificaiton is',L)
      
      输出
      List after modificaiton is ['Red', 'Blue', 'Orange', 'Black', 'Grey']
      
  2. 如何向 Python 列表添加项?

    这是修改列表的另一种方式,即向现有列表添加其他元素。对于向列表添加项,Python 有两种方法:
    • append() 方法用于向 Python 列表添加一个项。语法是 list_name.append(item)
      LF =['Daisy','Rose']
      LF.append('Tulip')
      print("List after appending:",LF) 
      
      输出
      List after appending: ['Daisy', 'Rose', 'Tulip']
      
    • extend() 方法用于向 Python 列表添加一系列项。语法是 list_name.extend([item1, item2,…])
      LF =['Daisy', 'Rose', 'Tulip']
      LF.extend(['Orchid','Poppy'])
      print("Extend List is:",LF)
      
      输出
      Extend List is: ['Daisy', 'Rose', 'Tulip', 'Orchid', 'Poppy']
      
    • 此外,可以通过在特定位置插入项来修改现有列表。insert() 方法用于在列表的特定位置插入特定项。insert 方法接受两个参数,一个指定位置,另一个指定项。insert() 的语法是 list_name.insert(index, item)

      在下面的示例中,项 20 被插入到 LN[2] 的位置。

      LN =[ 10,30]
      LN.insert(2,20)
      print(LN) 
      
      输出
      [10, 30, 20]
      
  3. 如何从 Python 列表中删除项?

    到目前为止,我们已经看到了对列表的替换和添加。同样,我们可以从列表中删除项。下面列出了两种常见的删除列表中项的方法。
    • 使用关键字 del:删除现有列表中的已知项或删除整个列表本身。语法是 del variable_name
      L = ['Red','Blue','Green','Pink','Grey']
      del L[2];
      print(" List after deleting item at index 2 is:",L)
       
      
      输出
      List after deleting item at index 2 is: ['Red', 'Blue', 'Pink', 'Grey']
      
    • 使用 remove() 方法:从现有列表中删除一项。语法是 List_name.remove(item_name)
      L = ['Red','Blue','Green','Pink','Grey']
      L.remove('Blue')
      print("List after removing item : Blue is:",L)
       
      
      输出
      List after removing item  Blue is: ['Red', 'Green', 'Pink', 'Grey']
      
    • 使用 pop() 方法:如果提供了索引,则删除指定索引处的项;否则,默认删除并返回最后一个项。语法是 List_name.pop(index)
      L=[10, 20, 30, 40, 50]
      L.pop(1);
      print("List after removing item at index 1 is :",L)
      L.pop();
      print("List after removing the last item is:",L) 
      
      输出
      List after removing item at index 1 is : [10, 30, 40, 50]
      List after removing the last item is: [10, 30, 40]
      

Python 嵌套列表

到目前为止,我们已经学习了列表及其特性。列表的另一个重要特性是其嵌套能力。那么,嵌套是什么意思呢?

嵌套意味着将某物存储在其他事物内部。在 Python 中,嵌套列表是包含另一个列表作为其元素的列表,而该元素又包含另一个列表。

嵌套列表的创建方式与创建列表相同,唯一的区别在于嵌套列表中,一个或多个元素可以是列表。

定义嵌套列表

Nest_List = [['Apple', 'Apricot'],['Banana','Blueberry'],"Cherry"]

 

Nested List in Python

为了更好地理解,嵌套列表可以表示为分层结构。

Nested List Structure in Python

如何从嵌套列表中访问项

从嵌套列表中访问项与引用多个索引一样简单。我们可以通过正向索引或反向索引来访问项。

通过正向索引从嵌套列表中访问项

NL = ['a',['bb','cc'],'d',['e',['fff','ggg']],'h','i']
print(NL[3])
print(NL[3][1])
print(NL[3][1][0])
print(NL[4])

输出

['e', ['fff', 'ggg']]
['fff', 'ggg']
fff
h

使用反向索引访问项

让我们参考嵌套列表反向索引的图示。

Nested List Structure in Python

使用反向索引从嵌套列表中访问项

NL = ['a',['bb','cc'],'d',['e',['fff','ggg']],'h','i']
print(NL[-3])
print(NL[-3][-1])
print(NL[-3][-1][-1])
print(NL[-4])

 

输出

['e', ['fff', 'ggg']]
['fff', 'ggg']
ggg
d

如何修改嵌套列表

同样,我们可以通过以下方式修改嵌套列表:

  1. 使用索引技术更改值

    更改嵌套列表中的项

    NL = ['a',['bb','cc'],'d',['e',['fff','ggg']],'h','i']
    
    NL[1][0]= 0
    print(NL)
    

     

    输出
    ['a', [0, 'cc'], 'd', ['e', ['fff', 'ggg']], 'h', 'i']
    
  2. 使用 append()、insert() 或 extend() 方法。

    在嵌套列表中添加项

    NNL = ['a',['bb','cc'],'d',['e',['fff','ggg']],'h','i']
    
    NL[1].append('xx')
    NL[1].insert(0,'yy')
    NL[3][1].extend([1,2,3])
    print(NL)
    

     

    输出
    ['a', ['yy', 'bb', 'cc', 'xx'], 'd', ['e', ['fff', 'ggg', 1, 2, 3]], 'h', 'i']
    
  3. 使用 pop()、remove() 或 del 关键字删除项。

    在嵌套列表中删除项

    NL = ['a',['bb','cc'],'d',['e',['fff','ggg']],'h','i']
    
    NL[1].pop(0)
    print(NL)  #removed items bb
    
    del NL[3][1][0]
    print(NL)  #removed item fff
    
    NL[3][1].remove('ggg')
    print(NL) 
    
    输出
    ['a', ['cc'], 'd', ['e', ['fff', 'ggg']], 'h', 'i']
    ['a', ['cc'], 'd', ['e', ['ggg']], 'h', 'i']
    ['a', ['cc'], 'd', ['e', []], 'h', 'i']
    

Python 列表函数

Python 列表具有一些内置函数,可用于执行一些常规的顺序操作。基本函数制成表格如下,以方便参考。

函数 描述
len(List) 返回列表的长度
max(List) 返回列表中的最大值
min(List) 返回列表中的最小值
compare(L1,L2) 比较列表 L1 中的项与列表 L2 中的项
list(seq) 将元组转换为列表

Python 列表运算符和操作

正如在字符串中学习的那样,Python 列表也有运算符可用于执行一些特定操作。以下是最常见的操作,以供更好地理解。

  1. 使用成员运算符检查子列表

    成员运算符用于验证项或子列表是否存在于提供的列表中。相应的结果将是一个布尔值,即 True 或 False。Python 中的两个成员运算符是:

    • in:如果项或子列表存在于提供的列表中,则返回 True。
    • not in:如果项或子列表不存在于提供的列表中,则返回 True。
    
    L =[1,2,3,5,6,8]
    print("Validation 3 in List is ",3 in L)
    print("Validation 4 not in List is",4 not in L)
    
    

    输出

    
    Validation 3 in List is True
    Validation 4 not in List is True
    
    
  2. 列表的连接和重复

    在 Python 中,也可以组合两个或多个单独的列表。组合两个或多个单独的列表称为连接,而将列表重复多次称为重复。用于连接和重复的两个运算符是:
    • 加号运算符 (+) 也称为连接运算符,用于连接列表。
    • 星号运算符 (*) 也称为重复运算符,用于重复列表。
    
    L1= ['Red','Orange']
    L2= ['Blue','Green']
    print("Concatenated List is :",L1+L2)
    print("Repeated List is:",L1*3)
     
    

    输出

    
    Concatenated List is : ['Red', 'Orange', 'Blue', 'Green']
    Repeated List is: ['Red', 'Orange', 'Red', 'Orange', 'Red', 'Orange']
    

Python 列表 – 内置方法

我们现在熟悉了一些内置方法,如 insert()remove()pop() 等。Python 编程语言中还有一些其他方法可与列表对象配合使用。方法通过点运算符访问,例如 list_name. method_name(parameters)

基本方法制成表格以方便参考。

方法 描述
count(p) 返回列表中作为参数传递的项的出现次数
index(p) 返回作为参数传递的项的最低索引
append(p) 将作为参数传递的项追加到列表;将一个项添加到列表的末尾
extend(list) 通过添加另一个列表来扩展列表。
insert(i,p) 将特定项插入到指定的索引处,其中 i 是索引值,p 是特定项。
remove(p)  从列表中移除作为参数传递的项。
pop() 默认情况下,删除列表中的最后一项并返回列表。
clear() 删除列表中的所有元素
sort() 默认按升序对列表项进行排序。
reverse()  反转列表中的项的顺序
copy()  返回现有列表的浅副本或虚拟副本。