→ uranusjr: 炫技解法:operator.itemgetter 或 filter 04/05 16:20
→ laputaca: 測試了一下 u大的標準解法沒問題 炫技我還不知道怎用XD 04/07 11:03
→ 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://www.ptt.cc/bbs/Python/M.1491584388.A.913.html