原文出处:http://www.siafoo.net/article/52
声明:本文是根据原文进行相关总结,并不是原文的真实翻译
文中提到了针对List的一些比较优化的操作,包括map、filter、reduce、enumerate、any、all、zip
1.如果需要对一个list中的元素全部执行一个操作,则可以使用map
方法一:新建一个List,遍历源List,并执行操作
numbers = [1,2,3,4,5]
squares = []
for number in numbers:
squares.append(number*number)
方法二:map加lambda函数
numbers = [1,2,3,4,5]
squares = map(lambda x: x*x, numbers)
方法三:map操作
numbers = [1,2,3,4,5]
squares = [number*number for number in numbers]
2.对List执行过滤
(如取出List中小于4的元素)
方法一:遍历
numbers = [1,2,3,4,5]
numbers_under_4 = []
for number in numbers:
if number < 4:
numbers_under_4.append(number)
方法二:filter加lambda
numbers = [1,2,3,4,5]
numbers_under_4 = filter(lambda x: x < 4, squares)
方法三:推荐的方式
numbers = [1,2,3,4,5]
numbers_under_4 = [number for number in numbers if number < 4]
3.List当中的reduce操作
(例:计算所有元素的积)
方法一:遍历
numbers = [1,2,3,4,5]
result = 1
for number in numbers:
result *= number
方法二:使用reduce函数
numbers = [1,2,3,4,5]
result = reduce(lambda a,b: a*b, numbers)
4.List的遍历并同时打印元素的索引
(enumerate)
strings = ['a', 'b', 'c', 'd', 'e']
for index, string in enumerate(strings):
print index, string,
#prints '0,a 1,b 2,c 3,d 4,e'
5.List当中判断是否存在某一条件的元素(any)或者是否所有元素都满足一个条件(all)
如判断一个List中是否存在小于10的元素
方法一:使用遍历的操作,并计算新生成的List是否为空,该种方法必须对元素进行全部遍历,性能低下
numbers = [1,10,100,1000,10000]
if [number for number in numbers if number < 10]:
print 'At least one element is low 10'
方法二:使用any,类似于短路操作,找到立即退出
numbers = [1,10,100,1000,10000]
if any(number < 10 for number in numbers):
print 'Success'
另外如判断List中是否全部大于10
方法一:遍历,然后比较长度,性能低下
numbers = [1,2,3,4,5,6,7,8,9]
if len(numbers) == len([number for number in numbers if number > 10]):
print 'Success!'
方法二:使用all,短路操作,
numbers = [1,2,3,4,5,6,7,8,9]
if all(number > 10 for number in numbers):
print 'Success!'
6.zip操作符
连接多个List,为一个同等长度的List,单List中的元素为tuple
letters = ['a', 'b', 'c']
numbers = [1, 2, 3]
squares = [1, 4, 9]
zipped_list = zip(letters, numbers, squares)
# zipped_list contains [('a', 1, 1), ('b', 2, 4), ('c', 3, 9)]
分享到:
相关推荐
JNI,全称Java Native Interface,是Java平台标准的一部分,它允许Java代码和其他语言写的代码进行交互。在Android开发中,JNI常被用来提高性能、调用系统底层库或...这在某些需要高性能或底层操作的场景下非常有用。
这种数据结构在处理表格数据、矩阵或树形结构时特别有用。 下面我们将详细探讨如何创建、操作和使用嵌套列表,以及在实际编程中的应用,特别是事件拦截的概念。 1. 创建嵌套列表: 创建嵌套列表非常简单,只需在...
通过以上内容,我们可以看出 `TList` 在 Delphi 中是一个极其有用的类。它不仅提供了基础的数据存储功能,还具备动态调整大小、排序等多种高级特性,极大地提高了程序开发的效率和灵活性。对于 Delphi 程序员而言,...
在 Alist 的开发中,C# 被用来编写应用程序的主体代码,包括文件操作、用户界面和业务逻辑。 2. **Alist 安装包**: 安装包通常包含应用程序的所有必要组件,包括可执行文件、库、配置文件等,使用户能够简单快捷地...
C# ArrayList 的用法 ArrayList 是一个特殊的数组,...ArrayList 是一个非常有用的数据结构,它提供了很多灵活的方法来操作数组。但需要注意的是,ArrayList 的速度相对较慢,需要根据实际情况选择合适的数据结构。
接下来,我们讨论一些`List`操作相关的知识点: 1. **条件判断**:在`<#list>`循环中,可以结合`if`或`?if`指令进行条件判断。例如,如果要只显示年龄大于18岁的用户,可以这样写: ```freemarker <#list users ...
这可能包括发送一个自定义的消息到父窗口,或者直接调用相应的成员函数来执行操作。 7. **处理焦点**:别忘了处理焦点变化,使按钮看起来像是被按下或未按下。在OnSetFocus()和OnKillFocus()中更新按钮的状态。 8....
本文将详述Linux内核中的链表实现,主要聚焦于`list.h`头文件中的相关概念、结构和函数,这对于理解和操作内核数据至关重要。 首先,`list.h`包含了Linux内核中双向链表的基本定义和操作。双向链表允许我们在列表的...
2. **适用场景**:`List<T>`适用于需要高性能数组操作且不涉及数据绑定的场合;`ObservableCollection<T>`则适合数据绑定和UI实时更新的需求。 3. **性能**:在进行大量的添加、删除操作时,由于`...
ListControl支持多种视图模式,如图标视图、列表视图、详细信息视图和小图标视图,这使得它在显示不同类型数据时非常有用。 二、读取ListControl数据 读取ListControl中的数据主要通过Items集合来完成。Items集合...
总结,通过Gson库,我们可以方便地在Android应用中创建一个工具类,将集合List转换为JSON字符串,这对于网络调用接口时处理参数非常有用。同时,了解如何发送HTTP请求也是Android开发中不可或缺的一部分,这里我们...
在Java编程语言中,集合(Collections)是存储和操作对象的主要数据结构,其中包括两种常见的类型:List和Set。本文将深入探讨List和Set在使用`retainAll`方法时的效率差异,并通过`ListAndRetainAll.java`和`...
在MFC中,List Control通常通过CListCtrl类来操作。在创建CListCtrl对象时,我们可以在对话框资源中添加ListView控件,并通过ID找到它,或者在CView或CDialog派生类的OnCreate()方法中动态创建。 为了实现翻页功能...
在Windows编程中,ListView控件(也称为List Control)是一种常用的数据展示组件,它允许用户以列表形式查看和操作数据。通常,ListView控件显示文本和图标,但有时我们需要增加更多的交互性,例如添加复选框,让...
ListWidget 提供了许多有用的方法和信号,例如设置选择模式、获取选择项、添加和删除项目等。 在本例中,我们将学习如何使用 ListWidget 在 Qt 下开发程序。首先,我们需要创建一个 Qt 项目,然后在设计界面中添加 ...
Rclone和Alist是两个非常有用的工具,可以帮助我们实现这一目标。Rclone是一款强大的命令行工具,它支持多种云存储服务,并提供了类似于本地文件系统的操作方式。Alist则是一个轻量级的Web界面,可以让我们通过...
首先,我们需要一个库来操作Excel,Apache POI是一个广泛使用的开源Java API,专门用于读写Microsoft Office格式的文件,包括Excel。使用Apache POI,我们可以创建、修改和读取Excel文件。安装POI库后,我们就可以...
在实际开发中,这样的工具类非常有用,因为它封装了常见的数据处理逻辑,提高了代码的可读性和可复用性。通过分析和使用`GroupFilterSortUtils`,我们可以更好地组织和操作数据,使得数据处理变得更为高效和便捷。 ...
在Java编程中,排序是常见的数据处理操作,特别是在处理集合数据结构时,如List。本文将深入探讨如何在Java的List中对包含多个属性的对象进行排序,并且支持动态设置每个属性的排序方式。这个功能的实现是通过泛型和...