我正在尋找一個數據結構來表示一些遺傳數據。該數據可以表示爲大小爲n
的列表,其中每個條目還具有在0和1之間的實數的「遺傳位置」。爲了使命名清晰,我將稱爲列表id
中的位置,並且遺傳位置gpos
。我實施這種方式是作爲一類與自定義索引的數據結構
class Coords(object):
def __init__(self, *args, **kwargs):
self.f = list(*args, **kwargs)
self.r = dict()
for i,e in enumerate(self.f):
self.r[e] = i
def __setitem__(self,x,y):
self.f.__setitem__(x,y)
self.r.__setitem__(y,x)
def __getitem__(self,x):
return self.f.__getitem__(x)
def __len__(self):
return self.f.__len__()
現在,我有兩個問題與此。第一個是self.r的indeces是浮動的,這顯然是一個壞主意。我正在考慮將它們轉換爲字符串(具有固定的數字位數),但是有更好的主意嗎?另一個問題我已經是我想要實現通過gpos
訪問的條目,所以如果我舉個例子,想gpos
0.2和0.4之間的訪問一切,我希望能夠做到這一點使用
import numpy as np
Coords(np.arange(1,0,-.1))
c.r[0.2:0.4]
有沒有簡單的方法來定義?我正在考慮使用二進制搜索找到正確的id
的起始和結束位置,然後使用這些ID訪問self.f
,但有沒有一種方法可以實現上述語法?
這很酷,我沒有不知道切片符號接受了非int參數! – lmjohns3
直到我試着寫這個答案時,我都沒有... – Jaime
其實我只是嘗試過其他數據類型,它似乎基本上任何表達式都可以工作,甚至瘋狂像'fancy_obj ['a':('b',8 )]' – lmjohns3