我正在寻找一个数据结构来表示一些遗传数据。该数据可以表示为大小为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