作者uranusjr (←这人是超级笨蛋)
看板Python
标题Re: [问题] 关於Index
时间Sat Apr 8 00:59:46 2017
※ 引述《laputaca (离歌笑)》之铭言:
: test = [1,2,3,4,5,6]
: 在R可以直接使用test[0,3,4]
: 或是类似这种
: index = [0, 2, 5]
: test[ !index ]
: (意即我要位置 1, 3, 6)
1F:→ uranusjr: 炫技解法:operator.itemgetter 或 filter 04/05 16:20
2F:→ laputaca: 测试了一下 u大的标准解法没问题 炫技我还不知道怎用XD 04/07 11:03
3F:→ laputaca: Z大的方法not in & in都 ok 04/07 11:05
打太快想错语法, 下面有人说了 not in 不行 XD
补一下炫技解法, 其实不太建议用, 不过如果哪天想写 DSL 或许可以参考
>>> import operator
>>> test = [1, 2, 3, 4, 5, 6]
>>> operator.itemgetter(0, 3, 4)(test)
(1, 4, 5)
稍微包装一下就可以满像 R 的写法
import collections.abc
import operator
class ListGetter:
def __init__(self, ls):
self._ls = ls
def __getitem__(self, key):
if isinstance(key, collections.abc.Sequence):
return list(operator.itemgetter(*indexes)(self._ls))
return self._ls[key]
ListGetter(test)[0, 3, 4] # [1, 4, 5]
再强调一次我并不推荐这样做
--
╱ ̄ ̄ ̄╲
▏
◢█◣ ▏
︻█︻█ ▏
成龙表示: 是喔...
′/ ‵ ▏
╰╯ █╱
ψQSWEET ◥︶█◤
--
※ 发信站: 批踢踢实业坊(ptt.cc), 来自: 218.161.19.12
※ 文章网址: https://webptt.com/cn.aspx?n=bbs/Python/M.1491584388.A.913.html