Python 板


LINE

刚开始接触Python几个月,有两个问题想要请教: 1. Python有大家比较常用的pipe operator吗? 例如shell有`|`; R透过套件可以有`%>%`(类似shell的`|`)、 甚至`%<>%`(把後方执行的结果再assign回去,像是Python的`+=`的万用版)。 我对这种写法已经有点习惯, 想请问在Python实现的方式是? 我搜寻了一下SO,有发现几篇,但大家写的都不一样: - https://stackoverflow.com/q/5988665/6666231 - https://stackoverflow.com/q/28252585/6666231 请问大家,有比较常用或推荐的吗? 2. Python的vectorization要怎麽实现? ```r strings <- c("dogs", "cats", "doggies", "I have a dog") mask <- grepl("^dog", strings) mask # TRUE FALSE TRUE FALSE strings[mask] # "dogs" "doggies" ``` 上面的意思是: 在"dogs"、"cats"、"doggies"、"I have a dog"中找"dog"开头的字串, 并且回传是否存在的逻辑值,存成物件`mask`。 `string[mask]`则是直接用逻辑值回传符合条件的元素。 由於R语言的特性是内建vectorization的概念, 到了Python好像每件事都变得棘手: ```python import re strings = ["dogs", "cats", "doggies", "I have a dog"] mask = list(map(lambda string: True if re.match("dog", string) else False, strings)) mask # [True, False, True, False] strings[mask] # TypeError: list indices must be integers or slices, not list ``` 产生`mask`时变成我要自建一个function再`map`它, 虽然只是`lambda`但还是觉得多了一步, 想请问有没有别的方法? 接下来`strings[mask]`更是直接爆炸 囧... 我看了一下itertools,但好像不是用在这种地方? 请问Python内上述的vectorization要怎麽实现呢? PS: 我自认对R满熟悉的,所以如果用R来类比说明我很能接受。谢谢! --



※ 发信站: 批踢踢实业坊(ptt.cc), 来自: 203.74.120.191
※ 文章网址: https://webptt.com/cn.aspx?n=bbs/Python/M.1527130178.A.0B7.html
1F:推 Yshuan: 将map换成filter, 出来的就会直接是你要的. 05/24 10:58
※ 编辑: clsmbstu (203.74.120.191), 05/24/2018 11:38:53
2F:→ clsmbstu: Thanks!! 多学到一招~ 05/24 11:59
3F:推 Neisseria: list comprehensions 或一些函数式程式相关函式 05/24 12:17
4F:→ Neisseria: 要 vector 通常是用 NumPy 为基础的套件 05/24 12:17
5F:推 ThxThx: functional programming的做法在Python里面比较不常用 05/24 14:12
6F:→ ThxThx: 通常会用list comprehension而不用map和filter 05/24 14:12
7F:→ ThxThx: pipe的本质就是一个接受一个参数的函式 05/24 14:12
8F:→ ThxThx: 我Python很熟很不能接受R这个语言(非常不适应... 05/24 14:12
9F:→ ThxThx: 同样我想用R的思维很难把Python写好 05/24 14:12
10F:→ clsmbstu: 我知道了 感谢楼上两位! 05/24 18:25







like.gif 您可能会有兴趣的文章
icon.png[问题/行为] 猫晚上进房间会不会有憋尿问题
icon.pngRe: [闲聊] 选了错误的女孩成为魔法少女 XDDDDDDDDDD
icon.png[正妹] 瑞典 一张
icon.png[心得] EMS高领长版毛衣.墨小楼MC1002
icon.png[分享] 丹龙隔热纸GE55+33+22
icon.png[问题] 清洗洗衣机
icon.png[寻物] 窗台下的空间
icon.png[闲聊] 双极の女神1 木魔爵
icon.png[售车] 新竹 1997 march 1297cc 白色 四门
icon.png[讨论] 能从照片感受到摄影者心情吗
icon.png[狂贺] 贺贺贺贺 贺!岛村卯月!总选举NO.1
icon.png[难过] 羡慕白皮肤的女生
icon.png阅读文章
icon.png[黑特]
icon.png[问题] SBK S1安装於安全帽位置
icon.png[分享] 旧woo100绝版开箱!!
icon.pngRe: [无言] 关於小包卫生纸
icon.png[开箱] E5-2683V3 RX480Strix 快睿C1 简单测试
icon.png[心得] 苍の海贼龙 地狱 执行者16PT
icon.png[售车] 1999年Virage iO 1.8EXi
icon.png[心得] 挑战33 LV10 狮子座pt solo
icon.png[闲聊] 手把手教你不被桶之新手主购教学
icon.png[分享] Civic Type R 量产版官方照无预警流出
icon.png[售车] Golf 4 2.0 银色 自排
icon.png[出售] Graco提篮汽座(有底座)2000元诚可议
icon.png[问题] 请问补牙材质掉了还能再补吗?(台中半年内
icon.png[问题] 44th 单曲 生写竟然都给重复的啊啊!
icon.png[心得] 华南红卡/icash 核卡
icon.png[问题] 拔牙矫正这样正常吗
icon.png[赠送] 老莫高业 初业 102年版
icon.png[情报] 三大行动支付 本季掀战火
icon.png[宝宝] 博客来Amos水蜡笔5/1特价五折
icon.pngRe: [心得] 新鲜人一些面试分享
icon.png[心得] 苍の海贼龙 地狱 麒麟25PT
icon.pngRe: [闲聊] (君の名は。雷慎入) 君名二创漫画翻译
icon.pngRe: [闲聊] OGN中场影片:失踪人口局 (英文字幕)
icon.png[问题] 台湾大哥大4G讯号差
icon.png[出售] [全国]全新千寻侘草LED灯, 水草

请输入看板名称,例如:Tech_Job站内搜寻

TOP