免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
12
最近访问板块 发新帖
楼主: yang200218
打印 上一主题 下一主题

map的用法 [复制链接]

论坛徽章:
46
15-16赛季CBA联赛之四川
日期:2018-03-27 11:59:132015年亚洲杯之沙特阿拉伯
日期:2015-04-11 17:31:45天蝎座
日期:2015-03-25 16:56:49双鱼座
日期:2015-03-25 16:56:30摩羯座
日期:2015-03-25 16:56:09巳蛇
日期:2015-03-25 16:55:30卯兔
日期:2015-03-25 16:54:29子鼠
日期:2015-03-25 16:53:59申猴
日期:2015-03-25 16:53:29寅虎
日期:2015-03-25 16:52:29羊年新春福章
日期:2015-03-25 16:51:212015亚冠之布里斯班狮吼
日期:2015-07-13 10:44:56
11 [报告]
发表于 2011-06-17 14:25 |只看该作者
grep都是返回原值吗?应该也是可以任意修改的吧,和map一样
py 发表于 2011-06-17 14:05



    map 的时候这么用也会带来不必要的副作用,如果 map 时用最好用 5.14 的 /r

论坛徽章:
0
12 [报告]
发表于 2011-06-17 15:04 |只看该作者
回复 10# zhlong8


    不好意思,可能我说的不是太清楚地。

数组比如是这样的
@array=("china.beijing  B.010.010   this is beijing city",
               "usa.ca         A.123.123    this is ca“,
          "jiangsu.nanj C.232.2323 this is nanjing
              )


我只想等到zhey一个数组
@out=("beijingg","ca","nankj")

论坛徽章:
46
15-16赛季CBA联赛之四川
日期:2018-03-27 11:59:132015年亚洲杯之沙特阿拉伯
日期:2015-04-11 17:31:45天蝎座
日期:2015-03-25 16:56:49双鱼座
日期:2015-03-25 16:56:30摩羯座
日期:2015-03-25 16:56:09巳蛇
日期:2015-03-25 16:55:30卯兔
日期:2015-03-25 16:54:29子鼠
日期:2015-03-25 16:53:59申猴
日期:2015-03-25 16:53:29寅虎
日期:2015-03-25 16:52:29羊年新春福章
日期:2015-03-25 16:51:212015亚冠之布里斯班狮吼
日期:2015-07-13 10:44:56
13 [报告]
发表于 2011-06-17 15:07 |只看该作者
回复  zhlong8


    不好意思,可能我说的不是太清楚地。

数组比如是这样的
@array=("china.beiji ...
yang200218 发表于 2011-06-17 15:04



    @result = map /^.*?\.(\w+)/, @array

论坛徽章:
1
2015年辞旧岁徽章
日期:2015-03-03 16:54:15
14 [报告]
发表于 2011-06-17 15:37 |只看该作者
还是原值啊,因为你原来的 @group 都变了吧
zhlong8 发表于 2011-06-17 14:09


疏忽了,只想着grep是不是会不改变原值了。
我一直对map和grep有不少疑惑,尤其是map

论坛徽章:
1
2015年辞旧岁徽章
日期:2015-03-03 16:54:15
15 [报告]
发表于 2011-06-17 15:39 |只看该作者
回复 10# zhlong8

这你也找到了。。。收藏
我一直看的是一个这个文档的很古老版本,这次能看看新版Perl有什么改变了

论坛徽章:
0
16 [报告]
发表于 2011-06-17 16:23 |只看该作者
回复 1# yang200218

@countries = map { (split /\./)[1] } @yourArray;

论坛徽章:
0
17 [报告]
发表于 2011-06-21 17:53 |只看该作者
本帖最后由 x9x9 于 2011-06-21 17:58 编辑
grep都是返回原值吗?应该也是可以任意修改的吧,和map一样
py 发表于 2011-06-17 14:05


区别还是有的,即使你用的替换。比如你这样定义数组  @group = ('aa,','bb,','cc,','dd','ee'); ,这时后面的两个元素dd和ee就不会被打印出来。因为它俩没有逗号可替换。

论坛徽章:
0
18 [报告]
发表于 2011-06-21 17:56 |只看该作者
本帖最后由 x9x9 于 2011-06-23 16:50 编辑

正好看到《Perl高效编程》第20条,说的就是grep、map的用法区别。
最后给出的要点:
* 在需要从一个列表推演到另一个列表时,应使用map函数。
* 在筛选列表元素时,应使用grep函数。
* 如果在遍历时需要修改变量,应使用foreach函数。


文中还说使用grep或map尽量不要修改默认的$_的值,如果要修改,最好赋给一个新声明的标量,然后对该标量进行操作。
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP