ruby 性感的迭代操作

进入Ruby的世界——基础篇 本文主要内容 Ruby语法的生存工具箱[1] Ruby基础编程指引:程序编写、保存、运行和错误检查 Ruby安装指南 Ruby的扩展机制 Ruby中易用的命令行工具,包括交互式Ruby解释器(irb) 本书的内容是Ruby基础,而本章是基础中的基石。本章的目标是让读者在开始学习Ruby之前掌握足够的知识和技巧。接下来读者将看到Ruby的基本语法和技术,以及Ruby的运行机制:如何写一个程序,怎样使... 阅读详情

           ruby是一门可以用sexy来形容的语言,下面就列举几个sexy的迭代操作。

1. each简单迭代

       each是ruby中非常常见的遍历操作,她是年老色衰的for直接替代品。如果需要索引,则可以使用each_with_index方法。
words=%w(good god ruby sexy girl run)
words.each do |word|
	puts word
end

2. find 查找单个元素

     查找到第一个符合条件的元素, find。
words=%w(good god ruby sexy girl run)
words.find do |word|
	word.start_with? 'r'
end
=> "ruby"

3. select 选取元素

    选取所有符合条件的元素, select。
words=%w(good god ruby sexy girl run)
words.select do |word|
	word.start_with? 'r'
end
=> ["ruby", "run"]

4. reject 剔除元素

    剔除部分符合条件的元素, reject。
words=%w(good god ruby sexy girl run)
words.reject do |word|
	word.start_with? 'r'
end
=> ["good", "god", "sexy", "girl"]

5. map 转换元素

    转换每个元素, map。
words=%w(good god ruby sexy girl run)
words.map do |word|
	word.capitalize
end
=> ["Good", "God", "Ruby", "Sexy", "Girl", "Run"]

6. uniq 唯一化

    剔除相等的元素, uniq。
words=%w(good god ruby sexy girl run run god Run)
words.uniq
=> ["good", "god", "ruby", "sexy", "girl", "run", "Run"]

   也可以在块中指定比较的方法,自定义比较的对象。
words=%w(good god ruby sexy girl run run god Run)
words.uniq do |w|
	w.downcase
end
=> ["good", "god", "ruby", "sexy", "girl", "run"]

7. group_by 分组元素

      分组元素,这个真的很sexy, group_by。
     按首字母分组:
words=%w(good god ruby sexy girl Run)
words.group_by do |w|
	w.capitalize[0]
end
=> {"G"=>["good", "god", "girl"], "R"=>["ruby", "Run"], "S"=>["sexy"]}

8. sort_by 排序元素

     排序元素, sort_by。
words=%w(good god ruby sexy girl Run)
words.sort_by do |w|
	w.length
end
=> ["Run", "god", "sexy", "ruby", "girl", "good"]

9. zip 组合元素

    组合遍历元素, zip。
words=%w(good god ruby sexy girl Run)
numbers=(11..16)
symbols=%w(+ - * / = %)
words.zip(symbols,numbers)
=> [["good", "+", 11], ["god", "-", 12], ["ruby", "*", 13], ["sexy", "/", 14], ["girl", "=", 15], ["Run", "%", 16]]

10. inject 累积元素

     累积元素求值,这是我最喜欢的一个, inject。
numbers=(1..10)
numbers.inject do |memo,value|
	memo=memo+value
end
=> 55

    这是比较简单的,举个难点的,如果需要将hash表 {a:1,b:2,c:3,d:1} 的键和值相互调换,即键变值,值变键,并且重复的值变成键后将原本的键变成列表形式的值。
tbl={a:1,b:2,c:3,d:1}
tbl.inject({}) do |memo,(k,v)|
	memo[v]||=[]
	memo[v]<<k
	memo
end
=> {1=>[:a, :d], 2=>[:b], 3=>[:c]}

11. partition 分组操作

     将元素分为符合条件和不符合条件的两个组。
   
(1..6).partition { |v| v.even? }  #=> [[2, 4, 6], [1, 3, 5]]

12. flatten扁平化列表

    将多级列表合并为一个单独列表,以上例的列表为例。
[[2, 4, 6], [1, 3, 5]].flatten  #=>[ 2 , 4 , 6 , 1 , 3 , 5 ]

13. rotate旋转列表

a = [ "a", "b", "c", "d" ]
a.rotate         #=> ["b", "c", "d", "a"]
a                #=> ["a", "b", "c", "d"]
a.rotate(2)      #=> ["c", "d", "a", "b"]
a.rotate(-3)     #=> ["b", "c", "d", "a"]

14. join将列表转换为一个字符串

[ "a", "b", "c" ].join        #=> "abc"
[ "a", "b", "c" ].join("-")   #=> "a-b-c"




超融合架构实战:如何用3节点搭建企业级分布式存储系统? 本文详细介绍了如何利用3节点搭建企业级分布式存储系统的超融合架构实战指南。从硬件选型、网络配置到存储策略调优,提供了全面的实操建议和性能优化技巧,帮助企业实现高效、弹性的IT基础设施。特别适合需要简化运维、提升存储性能的中型企业参考。 阅读详情

相关推荐

金蝶云星空-协同开发云-安装开发环境

金蝶协同开发云就是不需要每一个开发都在自己的本机安装开发环境,自己安装可容易出错,包括源代码管理也一并解决了,大大减少了开发人员的工作量和降低了上手的难度。

qq_33881408的博客 5598

ruby 中处理字符串

Ruby代码   #定义字符串   "abc"    'efg'     %Q{abc} #等价于 ""      %{hahaha} #等价于 ""      %q!efg! #等价于 ''      %!hello! #等价于 ''   #定义字符串 "abc" 'efg' %Q{abc} #等价于 "" %{hahaha} #等价于 ""

maxiaokun55的专栏 1708

433M遥控器无线解码1527协议

433M遥控器无线解码1527协议,定时器轮询法

weixin_58595117的博客 1万+

Ruby字符串(2):String方法详细整理

String方法整理 官方手册 类方法 new new(str="") → new_str new(str="", encoding: enc) → new_str new(str="", capacity: size) → new_str encoding指定创建什么编码的字符串,即new_str是什么编码的。 capacity指定创建字符串对象时预先分配好的buffer大小。如果以后要扩容该...

weixin_30550081的博客 1181

生产环境下oracle19c rac恢复节点2

现状:目前节点1数据库集群服务处于正常,节点2服务器由于系统故障无法恢复,确认系统重装。目标:不影响业务的情况下,重新把节点2添加回集群中。

sqlora的专栏 867

别再瞎试了!用Python+正交设计,5分钟搞定你的多因素实验方案

本文介绍了如何利用Python和正交设计高效优化多因素实验方案。正交设计通过精心设计的正交表,用最少的实验次数覆盖所有因素的水平组合,显著提升实验效率。文章详细讲解了正交设计的核心优势、Python实现工具链、实验实施与数据分析方法,以及高级技巧与常见问题解决方案,帮助读者快速掌握这一强大的实验优化技术。

weixin_42526087的博客 336

Ruby入门笔记

Ruby入门笔记   一切皆为对象 “Hello”.length   方法 定义:def开头 end结尾 命名一般采用下划线分隔单词   字符串中可以嵌入表达式   返回值:a)return+返回值 b) 函数最后一行代码的值为返回值(太神奇了)     类 定义:class 开头 end结尾 Initialize是构造方法 @开头的变量是实例变量(一个实例对...

weixin_34024034的博客 130

别再乱改宏定义了!STM32F103程序移植保姆级教程(从C8T6到ZET6实战)

本文详细解析了STM32F103程序从C8T6移植到ZET6的实战步骤,重点介绍了硬件差异、开发环境配置、时钟陷阱及外设处理等关键点。通过修改宏定义(如STM32F10X_HD)、调整启动文件和时钟配置,确保移植顺利进行。适合嵌入式开发者参考,避免常见移植问题。

weixin_42567497的博客 215

ruby-布尔值字符串查询

布尔值字符串查询 1、使用Include?方法可以询问一个字符串是否包含指定的字串。如 string="Ruby is a cool language" >>string.include?("Ruby") =>true >>string.include("English") =>false 2、使用start_with?和end_with...

fd2015的博客 341

RK3566/RK3568 Android 11添加系统服务

【代码】RK3566/RK3568 Android 11添加系统服务。

qq_23921815的博客 641

QML实现ListView的拖动排序

现有一种需求,就是用鼠标拖动某项,动态去改变某一项在ListView中显示的顺序位置,经过研究及实践实战,实现方式的核心代码如下: import QtQuick 2.4 import QtQuick.Controls 1.3 import QtQuick.Window 2.2 import QtQuick.Dialogs 1.2 Rectangle { width: 800 ...

草上爬的博客 7564

startsWith(),endsWith()的作用和用法

startsWith(),endsWith()的作用,用法,判断字符串a是不是以字符串b开头或结尾 Java代码 if(a.startsWith(b))   //判断字符串a 是不是以字符串b开头.   Java代码 if(a.endsWith(b))   //判断字符串a 是不是以字符串b结尾.     一个demo测试  

王春雨 1万+

Airtest进阶使用篇-提高脚本稳定性+批量运行脚本

Airtest进阶篇,主要分享如何提高脚本稳定性+如何批量运行脚本生成测试报告!

程序员小杨哥的博客 2570

简化方法返回,tap的使用

2019独角兽企业重金招聘Python工程师标准>>> ...

weixin_33916256的博客 355

假人有限元模型

假人模型,车辆碰撞假人有限元模型,适合做乘员安全的研究者利用

精雕软件(JDpaint) 5.5 绿色版

精雕软件(JDpaint) 5.5 绿色版精雕软件(JDpaint) 5.5 绿色版精雕软件(JDpaint) 5.5 绿色版

“科技猫”联合创始人古茜:懂科技的女生更性感

本文仅用于学习和交流目的,不得用于商业用途。非商业转载请注明作译者、出处,并保留本文的原始链接:http://www.ituring.com.cn/art... 访谈嘉宾: 古茜,是女性技术社区科技猫的联合创始人,多次代表国内女性技术社区参与国际技术交流大会和女性峰会。中国技术社群联盟成员,SheroChina 2016女性影响力年度获...

weixin_33889245的博客 2053

复分析 阿尔福斯(Ahlfors) 第三版答案 英文

答案分为十章,有部分习题没有答案,全英文复分析阿尔福斯(Ahlfors) 第三版答案

NERD Commenter版本更新历史:从2.5.0到最新版本的完整指南

NERD Commenter是Vim编辑器中最强大的代码注释插件之一,它为开发者提供了丰富的注释操作和样式选择。从2.5.0版本开始,这个插件经历了多次重要更新,不断扩展功能、优化性能,并增加了对更多编程语言的支持。本文将为您详细梳理NERD Commenter从2.5.0到最新版本的重要更新内容和发展历程。 ## 🚀 版本2.5.0:稳定基础的奠定 **2.5.0版本**是NERD Com

gitblog_00861的博客 1075

IDEA的使用指南

IDEA基于java的使用手册,可以最快速的上手,在使用中不断的丰富自己的使用技巧.

AntiPatterns基础知识:Rails视图

在这个对初学者友好的系列中,我们将研究AntiPatterns,顾名思义,它与设计模式几乎相反。 他们是您绝对应避免的问题解决方案的发现。 在本文中,我们将重点介绍主要的View AntiPattern(PHPitis),并通过几种技术来保持您的视图简洁明了。 在您的视图中包含大量Ruby代码不仅令人讨厌,而且通常显然是不必要的。 主题 Rails视图 PHP炎 提取助手 ...

代码教主 279

python和scre_前端大牛们都学过哪些东西?

想成为一名前端大牛,按照这个路线学习,足以帮助你快速成长。从一名小白开始入门前端,到前端进阶,再到成长为技术大牛。首先学习 HTML、CSS 和 JavaScript 的基础知识。你可以在以下几个网站学习这些基础知识:之后你就需要学习一些包管理,包括 npm,yarn 等等。接下来学习 CSS 预处理,CSS 的一些框架的使用,最常见的就是 Bootstrap 等。以及 CSS Architect...

weixin_39846612的博客 153

SaaS4Devs完全指南:开发者如何从零构建盈利的微SaaS业务

你是否梦想着从开发者转变为创业者?想要构建自己的软件即服务业务,却不知道从何开始?SaaS4Devs为你提供了一套完整的微SaaS创业指南!😊 无论你是想逃离朝九晚五的工作,还是希望创建被动收入来源,这篇指南都将为你揭示从零到盈利的完整路径。 ## 什么是微SaaS?为什么它适合开发者? 微SaaS是一种由个人或小团队拥有和运营的软件即服务业务。这些业务具有地理位置独立、高利润率、低风险和可

gitblog_00325的博客 343

python的创始人、特点应用领域_易开发创始人潘俊勇:这些年我遇到的那些坑

优快云年度技术盛宴 “SDCC 2015中国软件开发者嘉年华”将于2015年11月19-21日在北京召开。在大会召开之际,优快云联系上了易开发创始人兼CTO潘俊勇,请他分享易开发的无栈开发之路。 他认为,Python是一门极简语言,易掌握,不会折腾程序员,很无害。他说,“技术人生是产品人生,我们是快乐的创造性的开发者,而不仅是苦逼的制造角色的程序员。兴趣是力量的来源。”届时,潘俊勇将在编程语言...

weixin_39967405的博客 274

本地部署不是伪需求:五大刚性场景与实操交付体系

本地部署是企业级系统在真实业务环境中应对网络不可靠、数据主权合规、超低延迟、存量系统耦合及自主可控等核心挑战的必然选择。其本质并非技术保守,而是基于成本-风险-可控性三维平衡的工程决策。从物理隔离的数据不出域要求,到毫秒级边缘推理的光速约束,再到国产化硬件与等保三级的供应链刚性,本地化已成为政务、医疗、制造、能源等领域保障业务连续性与合规确定性的关键技术路径。本文聚焦可落地的环境基线标准化、最小权限治理、离线持续交付、故障自愈可观测等实操方法论,提供面向生产环境的本地化交付完整范式。

weixin_34267123的博客 377

Python咨询实战:25年经验沉淀的工程化选型逻辑

编程语言不仅是语法工具,更是组织认知基础设施的关键载体。从可读性即可靠性、胶水能力与GIL的共生博弈,到类型提示驱动的柔性契约设计,Python凭借‘渐进式严谨’在交付确定性、团队可扩展性与错误可解释性之间取得独特平衡。尤其在跨年度、跨部门、高商业压力的咨询项目中,其缩进强制、清晰错误信息、生态组合能力与成熟诊断工具链(如cProfile、pdb、shap),显著降低协作摩擦与线上故障响应时间。本文聚焦真实客户场景——新能源电池健康度预测、金融监管报送升级、IoT数据看板构建等,解析Python如何以务实主

weixin_30920513的博客 393

.startsWith和endsWith的使用方法与说明

a.startsWith(b) --判断字符串a,是不是以字符串b开头 a.endsWith(b) --判断字符串a,是不是以字符串b结尾

战国_ 1万+

Ruby 字符串操作(和 Python3 字符串操作进行对比)

本来是想写到学习笔记一块的,但是字符串操作这块的内容确实太多了,所以单独提取出来了。 Ruby 和 Python 两种语言都支持单引号和双引号的字符串。话不多说,直接上菜 字符串中嵌入变量 # Ruby [1] pry(main)> name1 = "Joe" => "Joe" [2] pry(main)> name2 = "Mary" => "Mary" [3] pry(main)> puts "你好 #{name1}, #{name2} 在哪?" 你好 Joe,

Looking的网页备忘录和个人知识库 1158

Ruby中的map, reduce, select, reject, group_by理解

转载▼ 标签:  it   a = %w(a b cD) map:      针对每个element进行变换并返回整个修改后的map      a.map do |item|         a.upcase      end       a.map(&:upcase) 一样的效果, &:代表了item, 太简

xzyxuanyuan的专栏 1万+

Java中startWith方法的使用!

今天看Java代码时,看到了字符串有一个方法是startsWith(String str)当时觉得见名之意,很简单吗,然后就自己动手做了一下,没想到发现了一个startsWith()方法的重载,startsWith(String str,int Index),当时上网去查了一下没有后边这个方法,于是自己做了一下测试,现在给出如下详细解释,startsWith(String str)就是检查形参

liudeqing2008的专栏 6万+
上一篇: rails live on the edge: 安装rails 4
下一篇: 初识JRuby之入门
qjpcpu
博客等级 码龄15年 59粉丝 106原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值