`
zhouzaibao
  • 浏览: 294161 次
  • 性别: Icon_minigender_1
  • 来自: 上海
社区版块
存档分类
最新评论

List的有用的操作

阅读更多

原文出处: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操作list集合,来存储对象

    JNI,全称Java Native Interface,是Java平台标准的一部分,它允许Java代码和其他语言写的代码进行交互。在Android开发中,JNI常被用来提高性能、调用系统底层库或...这在某些需要高性能或底层操作的场景下非常有用。

    list嵌套list例子

    这种数据结构在处理表格数据、矩阵或树形结构时特别有用。 下面我们将详细探讨如何创建、操作和使用嵌套列表,以及在实际编程中的应用,特别是事件拦截的概念。 1. 创建嵌套列表: 创建嵌套列表非常简单,只需在...

    delphi Tlist详解

    通过以上内容,我们可以看出 `TList` 在 Delphi 中是一个极其有用的类。它不仅提供了基础的数据存储功能,还具备动态调整大小、排序等多种高级特性,极大地提高了程序开发的效率和灵活性。对于 Delphi 程序员而言,...

    Alist安装包+快速启动-停止脚本.zip

    在 Alist 的开发中,C# 被用来编写应用程序的主体代码,包括文件操作、用户界面和业务逻辑。 2. **Alist 安装包**: 安装包通常包含应用程序的所有必要组件,包括可执行文件、库、配置文件等,使用户能够简单快捷地...

    C#_StringList的用法

    C# ArrayList 的用法 ArrayList 是一个特殊的数组,...ArrayList 是一个非常有用的数据结构,它提供了很多灵活的方法来操作数组。但需要注意的是,ArrayList 的速度相对较慢,需要根据实际情况选择合适的数据结构。

    Freemarker中List的应用

    接下来,我们讨论一些`List`操作相关的知识点: 1. **条件判断**:在`&lt;#list&gt;`循环中,可以结合`if`或`?if`指令进行条件判断。例如,如果要只显示年龄大于18岁的用户,可以这样写: ```freemarker &lt;#list users ...

    MFC在ListCtrl中加入Button

    这可能包括发送一个自定义的消息到父窗口,或者直接调用相应的成员函数来执行操作。 7. **处理焦点**:别忘了处理焦点变化,使按钮看起来像是被按下或未按下。在OnSetFocus()和OnKillFocus()中更新按钮的状态。 8....

    详解linux内核链表之list.h

    本文将详述Linux内核中的链表实现,主要聚焦于`list.h`头文件中的相关概念、结构和函数,这对于理解和操作内核数据至关重要。 首先,`list.h`包含了Linux内核中双向链表的基本定义和操作。双向链表允许我们在列表的...

    C# ObservableCollection与List

    2. **适用场景**:`List&lt;T&gt;`适用于需要高性能数组操作且不涉及数据绑定的场合;`ObservableCollection&lt;T&gt;`则适合数据绑定和UI实时更新的需求。 3. **性能**:在进行大量的添加、删除操作时,由于`...

    ListControl控件基本用法

    ListControl支持多种视图模式,如图标视图、列表视图、详细信息视图和小图标视图,这使得它在显示不同类型数据时非常有用。 二、读取ListControl数据 读取ListControl中的数据主要通过Items集合来完成。Items集合...

    Android list转json工具类

    总结,通过Gson库,我们可以方便地在Android应用中创建一个工具类,将集合List转换为JSON字符串,这对于网络调用接口时处理参数非常有用。同时,了解如何发送HTTP请求也是Android开发中不可或缺的一部分,这里我们...

    List和Set使用retainAll方法的比较

    在Java编程语言中,集合(Collections)是存储和操作对象的主要数据结构,其中包括两种常见的类型:List和Set。本文将深入探讨List和Set在使用`retainAll`方法时的效率差异,并通过`ListAndRetainAll.java`和`...

    【MFC】List Control 控件实现翻页

    在MFC中,List Control通常通过CListCtrl类来操作。在创建CListCtrl对象时,我们可以在对话框资源中添加ListView控件,并通过ID找到它,或者在CView或CDialog派生类的OnCreate()方法中动态创建。 为了实现翻页功能...

    List control 添加check box

    在Windows编程中,ListView控件(也称为List Control)是一种常用的数据展示组件,它允许用户以列表形式查看和操作数据。通常,ListView控件显示文本和图标,但有时我们需要增加更多的交互性,例如添加复选框,让...

    Qt下使用ListWidget

    ListWidget 提供了许多有用的方法和信号,例如设置选择模式、获取选择项、添加和删除项目等。 在本例中,我们将学习如何使用 ListWidget 在 Qt 下开发程序。首先,我们需要创建一个 Qt 项目,然后在设计界面中添加 ...

    linux下 Rclone+Alist实现挂载网盘(天翼云盘为例)

    Rclone和Alist是两个非常有用的工具,可以帮助我们实现这一目标。Rclone是一款强大的命令行工具,它支持多种云存储服务,并提供了类似于本地文件系统的操作方式。Alist则是一个轻量级的Web界面,可以让我们通过...

    java 处理Excel 带 List

    首先,我们需要一个库来操作Excel,Apache POI是一个广泛使用的开源Java API,专门用于读写Microsoft Office格式的文件,包括Excel。使用Apache POI,我们可以创建、修改和读取Excel文件。安装POI库后,我们就可以...

    Java对List多个排序、查询条件的处理

    在实际开发中,这样的工具类非常有用,因为它封装了常见的数据处理逻辑,提高了代码的可读性和可复用性。通过分析和使用`GroupFilterSortUtils`,我们可以更好地组织和操作数据,使得数据处理变得更为高效和便捷。 ...

    java List中对象多属性排序及各属性排序设置

    在Java编程中,排序是常见的数据处理操作,特别是在处理集合数据结构时,如List。本文将深入探讨如何在Java的List中对包含多个属性的对象进行排序,并且支持动态设置每个属性的排序方式。这个功能的实现是通过泛型和...

Global site tag (gtag.js) - Google Analytics