`
huangz
  • 浏览: 320409 次
  • 性别: Icon_minigender_1
  • 来自: 广东-清远
社区版块
存档分类
最新评论

Python中的foreach

阅读更多

Python有常用的map、reduce等函数,但是没有foreach,不过自己写一个也不难:

 

定义

 

# 需要Python3

def foreach(function, iterator):
    for item in iterator:
        function(item)
 

示例


输出所有迭代器中的元素:

 

>>> foreach(lambda value: print(value), range(5))
0
1
2
3
4
 


输出迭代器中的所有偶数:

 

>>> def echo_all_even(value):
...     if value % 2 == 0:
...             print(value)
... 
>>> foreach(echo_all_even, range(5))
0
2
4
 

注意上面的示例我们定义了一个echo_all_even的临时函数,因为Python只支持在lambda中写单个表达式。 :(


for、map和foreach的区别:

 

foreach的作用是在不改变迭代器中的值的前提下(单纯依靠函数的副作用),将函数应用到迭代器中的各个元素上,主要是用作输出和调试作用,它一般不返回值。


foreach是for之上的一个抽象,for可以只迭代迭代器中的一部分值,而且可能修改迭代器中的值,而foreach迭代迭代器中的所有值,foreach也不修改迭代器中的值。


map和foreach类似,都是将一个函数应用到迭代器的所有值中,但map返回一个新的列表作为结果,而foreach不返回值。

分享到:
评论
3 楼 107x 2017-01-11  
不错,可以自己写一个   谢谢!
foreach只调用,不返回结果,
还可以写成可变长参数
2 楼 huangz 2011-09-15  
不,我在写代码的时候也很喜欢用列表推导式,甚至有时候还冒着损失可读性的风险,将for循环改成列表推导式,因为我觉得这样看上去更niublity一些。。哈哈哈。

另外,foreach和列表推导式是不同的,如果你觉得它们两是一样,那你最好先查查wiki。
1 楼 est 2011-09-15  
莫非LZ没接触过更强大的list comprehension?

相关推荐

    Python访问SQLServer数据库

    NULL 博文链接:https://foreach4.iteye.com/blog/2289791

    【JavaScript源代码】Nodejs 数组的队列以及forEach的应用详解.docx

     本文主要记录了在Nodejs开发过程中遇到过的由数组特性引起的问题及解决方式,以及对数组的灵活应用。 本文代码测试结果均基于node v6.9.5 数组与队列 利用数组对象方法push/shift可实现队列先进先出特性,例如...

    python调用SSH命令

    NULL 博文链接:https://foreach4.iteye.com/blog/2234237

    Python中调用PowerShell、远程执行bat文件实例

    python调用本地powershell方法 1、现在准备一个简陋的powershell脚本,功能是测试一个IP列表哪些可以ping通: 代码如下: function test_ping($iplist) {  foreach ($myip in $iplist)  {  $strQuery = “select ...

    【JavaScript源代码】Vue必学知识点之forEach()的使用.docx

     在前端开发中,经常会遇到一些通过遍历循环来获取想要的内容的情形,而且这种情形在开发中无所不在,那么本篇博文就来分享一个比较常用又经典的知识点:forEach() 的使用。 forEach() 是前端开发中操作数组的一种...

    多种语言的foreach用法示例

    这些示例展示了不同编程语言中使用foreach或类似的语法来迭代集合或数组中的元素。请注意,具体语法可能会因语言的不同而有所差异,但概念上的思路是相似的:对于集合中的每个元素,执行指定的操作。

    【JavaScript源代码】JS中for,for...in,for...of和forEach的区别和用法实例.docx

    JS中for,for...in,for...of和forEach的区别和用法实例  for循环  基本语法格式: for(初始化变量;条件表达式;操作表达式){    循环体语句;  } 普通for循环在Array和Object中都可以使用。for循环中可以使用...

    anlinq:具有所有需要的列表推导式的轻量级 LINQ-like python 模块

    to_list , to_dictionary , where , distinct , group_by , order_by , take , skip , select , map , select_many , aggregate , reduce , foreach , concat , concat_item , except_for , ...

    --Awesome-Python--:파이썬에튜토리얼+파이썬에관한제모아두기

    很棒的Python ... 声明는foreach형태로만사용가능 연산자를链가능(a <b <c처럼) 切换가 않고리연산자에기호를사용하지않고,키워드사용(和,或不是) 강력한语法糖들이많음(解压,枚举,理解등)

    leetcodepdfpython-leetcode-question-generator:生成leetcode问题的pdf

    Python一个文件中的所有 Leetcode 问题 我想在 Kindle 上用纸笔练习 Leetcode 问题。 因此,我编写了一个脚本,它复制所有 Leetcode 算法问题并将其格式化为单个文件 (txt, pdf, mobi) 。 用法 您可以从此存储库下载...

    去噪代码matlab-OnlineDictionaryLearning:稀疏编码算法在线字典学习的快速实现

    我们仍然需要创建一个包装器,以从上述python脚本中调用字典学习的C实现。 完整的实现: LARS的实现(请在上面检查FISTA的实现)。 可以像在matlab实施中那样用FISTA替换LARS。 降噪演示 编译后,测试denoising.cpp...

    boost 1.41 中文文档,使用帮助,教程手册

    alai04 accumulators, any, assign, bimap, call_traits, circular_buffer, compatibility, concept check, config, conversion, date_time, filesystem, foreach, function_types, functional, integer, intrusive,...

    Alt + S-crx插件

    您可以访问我们的网站:https://www.altsextension.com ALT + S扩展:搜索Google查询比以前更短,更快 让我们举例说明您的第一个查询“python”: 可能看起来像 *“foreach python” *“Init Array Inline Python”...

    鳄鱼

    该软件包扩展了许多本机Python类,使您具备了难以驯服的功能。 扩展的主要类是: list扩展到List 忘记存在for循环,因为对于此类, for循环被隐式地用于将函数应用于所有项目。 编程时不可避免地会遇到相同类型的...

    基本_但_有用

    Python使用记录列表编写.csv文件: : 创建SQL Server作业并调用SSIS包以定期自动导入数据 如果您没有SQL Server代理,请添加它,并使用SQL Server代理创建作业: : 创建SQL Server作业: : 创建用于数据导入的...

    split-annotations:拆分注释项目的源代码

    它包含C实现的源代码,Python实现以及SOSP 2019论文中的基准测试。 拆分注释(SA)是一个用于在现有库下实现优化(例如流水线化和并行化)的系统。 其他实现这些优化的方法,例如中间表示,编译器或DSL,都是重量级...

    katbot:完全模块化的不和谐机器人

    使用git submodule foreach git pull origin master更新子git submodule foreach git pull origin master (也许) 使用TODO安装依赖项 使用python3 katbot.py运行 用法 说“ kathelp”以获取正在运行的模块及其...

    ES6 迭代器(Iterator)和 for.of循环使用方法学习(总结)

    生成器概念在Java,Python等语言中都是具备的,ES6也添加到了JavaScript中。Iterator可以使我们不需要初始化集合,以及索引的变量,而是使用迭代器对象的 next 方法,返回集合的下一项的值,偏向程序化。 迭代器是带...

Global site tag (gtag.js) - Google Analytics