8种高级的Python列表使用技巧,都给你整理好啦(附实操代码)

开发 后端
Python中的列表是我们很常见的数据结构之一,也是很强大的数据结构之一!Python列表功能非常丰富,并且具有很多隐藏的技巧没有被发现。

 Python中的列表是我们很常见的数据结构之一,也是很强大的数据结构之一!Python列表功能非常丰富,并且具有很多隐藏的技巧没有被发现。

 

[[330684]]

 

一、使用Python过滤列表

1.使用Filter()函数

filter()函数采用两个参数:函数和可迭代项。 在这种情况下,我们将定义一个函数并过滤一个列表。

让我们用一个例子来尝试一下!我们将从列表开始,并过滤出所有小于3的项:

 

  1. original_list = [1,2,3,4,5] 
  2.  
  3. def filter_three(number): 
  4.   return number > 3 
  5.  
  6. filtered = filter(filter_three, original_list) 
  7.  
  8. filtered_list = list(filtered) 
  9.  
  10. print(filtered_list) 
  11. Returns [4,5] 

让我们看看这里发生了什么:

  1. 我们定义了原始列表
  2. 然后定义一个接受参数(“ number”)的函数。如果数字大于3,函数将返回True。
  3. 我们定义了一个应用filter函数的项(“ filtered”)。我们的项已筛选,是筛选对象。
  4. 最后,我们创建“ filtered_list”,将列表函数替换为filtered对象。

2.具有列表理解

类似地,我们可以用列表理解过滤列表。记住,列表理解是定义和修改列表非常简单快捷的方式。

让我们看看如何通过列表理解来完成前面的任务:

original_list = [1,2,3,4,5]filtered_list = [number for number in original_list if number > 3]print(filtered_list)# Return [4,5]

从这两个示例中我们可以看出,列表理解是一种更简单,更快捷的过滤列表方法。

二、修改列表

1.使用Map()函数

Python Map函数允许我们将函数应用于可迭代对象中的每个项。

假如我们有一个列表,想返回每个数字的平方。我们可以使用map()函数来实现这一点。让我们看一下具体操作:

 

  1. original_list = [1,2,3,4,5] 
  2.  
  3. def square(number): 
  4.   return number ** 2 
  5.  
  6. squares = map(square, original_list) 
  7.  
  8. squares_list = list(squares) 
  9.  
  10. print(squares) 
  11.  
  12. Returns [1, 4, 9, 16, 25] 

让我们探讨一下这里发生了什么:

首先,我们定义了原始列表和一个返回其参数平方(“number”)的函数。

然后,我们创建一个名为“squares”的新变量,它是map函数的结果,函数和原始列表作为其参数。

最后,我们创建另一个新变量,将list函数应用于squares变量。

这个方法有点复杂!接下来让我们看看清单理解!

 

2.具有列表理解

我们可以使用列表理解来修改列表项。这甚至是一个更容易和更优雅的方式来编写我们的代码。

让我们尝试一下!

 

  1. original_list = [1,2,3,4,5] 
  2.  
  3. squares_list = [number ** 2 for number in original_list] 
  4.  
  5. print(squares_list) 
  6.  
  7. Returns [1,4,9,16,25] 

三、将列表与Zip()函数合并

在某些情况下,可能需要合并两个或多个列表。这就是zip()函数的作用:在每个索引处创建一个包含列表对应元素的对象。

让我们用一个例子来尝试一下:

 

  1. original_list = [1,2,3,4,5] 
  2.  
  3. reversed_list = original_list[::-1] 
  4.  
  5. print(reversed_list) 
  6.  
  7. Returns: [5,4,3,2,1] 

四、颠倒列表

Python列表是有序的数据结构。因此,项目的顺序很重要。有时我们可能需要颠倒列表中的项,这可以使用Python切片操作轻松完成。

让我们用一个例子来尝试一下:

original_list = [1,2,3,4,5]reversed_list = original_list[::-1]print(reversed_list)# Returns: [5,4,3,2,1]

五、检查列表中的成员身份

有时我们想查看列表中是否存在某个项。

我们只需使用in运算符即可完成此操作。

 

  1. games = ['Yankees''Yankees''Cubs''Blue Jays''Giants'
  2.  
  3. def isin(item, list_name): 
  4.   if item in list_name: print(f"{item} is in the list!"
  5.   else: print(f"{item} is not in the list!"
  6.  
  7. isin('Blue Jays', games) 
  8. isin('Angels', games)  
  9.  
  10. Returns 
  11. #Blue Jays在名单上! 
  12. #Angels不在名单上! 

六、查找列表中最常见的项

如果你想在列表中找到最常见的项。例如,你可能在列表中记录了正反面游戏的获胜者,并且想知道哪个赢得最多。

 

  1. games = ['heads''heads''tails''heads''tails'
  2. items = set(games) 
  3. print(max(items, key = games.count)) 

让我们看看这段代码做什么:

  1. 我们用五个正面或反面游戏的结果来定义一个列表;
  2. 我们定义了列表中所有项的集合。set()函数过滤掉了列表中的重复项;
  3. 最后,我们将max()应用于项目集,并使用key参数作为集合中元素的最高计数。

七、展开列表

有时我们会得到一个列表,其中包含其他列表,也就是表中有表。你可以使用列表理解轻松做到这一点!

让我们尝试一下:

 

  1. nested_list = [[1,2,3],[4,5,6],[7,8,9]] 
  2.  
  3. flat_list = [i for j in nested_list for i in j] 
  4.  
  5. print(flat_list) 
  6.  
  7. Returns [1, 2, 3, 4, 5, 6, 7, 8, 9] 

八、检查唯一性

如果需要检查列表中的所有项是否唯一,则可以使用集合的功能来完成此操作!

Python中的集合类似于列表(因为它是可变且无序的),但是它只能包含唯一的项。

为此,我们需要使用一个函数将列表转换为一个集合,并比较两个项的长度::

 

  1. list1 = [1,2,3,4,5] 
  2. list2 = [1,1,2,3,4] 
  3.  
  4. def isunique(list): 
  5.   if len(list) == len(set(list)): 
  6.     print('Unique!'
  7.   else: print('Not Unique!'
  8.  
  9. isunique(list1) 
  10. isunique(list2) 
  11.  
  12. Returns  
  13. # 唯一性 
  14. # 不唯一 

 

--END--

希望你学到了以上关于列表的新知识,以及如何以不同的方式运用起来!

责任编辑:华轩 来源: 今日头条
相关推荐

2019-01-16 10:55:08

Python 开发编程语言

2023-01-05 17:55:39

分布式架构

2020-10-23 09:50:20

链表Java代码

2022-01-11 07:59:15

K8S KubernetesAirflow

2020-08-04 07:47:59

代码模板模式

2010-04-14 10:48:49

Oracle使用

2020-11-24 11:30:51

SpringJava代码

2019-04-02 14:04:34

虚拟现实VR设计

2020-08-23 18:18:27

Python列表数据结构

2021-07-09 07:21:40

SpringBootRedisLUA

2010-04-12 09:36:29

Oacle merge

2020-07-26 18:34:46

Python开发工具

2010-04-09 09:07:43

Oracle游标触发器

2009-12-23 17:22:18

Linux系统rsyn

2010-04-15 14:18:30

Oracle创建

2010-05-10 17:00:53

Oracle死锁进程

2010-04-09 10:13:13

Oracle数据字典

2010-05-18 12:24:16

MySQL binlo

2018-03-12 06:30:05

Python数据科学编程

2024-02-05 13:07:00

.NETTable组件
点赞
收藏

51CTO技术栈公众号