The function searches for the last outputed list object and creates variables for easy access (latest version can be found on github). Instead of typing l[_index_] you can simple tame l__index_. See the example below.
~/.config/ipython/profile_default/startup# cat rl.py def object_name(obj, ret=None): g=globals() ret=[] obj_id=id(obj) for i in g.keys() : if id(g[i]) == obj_id : print i, g[i] ret.append(i) return ret def rl (mylist=None, prefix=None, limit=7): prefix = prefix if prefix else "l" limit = limit if limit else 7 aux=list(Out.keys()) # we want to make a copy aux.sort() aux.reverse() last_index = aux[0] if mylist == None : mylist = Out[last_index] mylist_name=In[last_index] if type(mylist) is not list : for i in aux : # print i, Out[i], if type(Out[i]) is list : mylist = Out[i] mylist_name=In[i] print("using last list object: %s" % mylist_name) break else : mylist_name = filter( lambda x: not x.startswith("_"), object_name(l)) if type(mylist) is not list : print("can't find any list or specified object is not a list") return glo=globals() for k, val in enumerate(mylist) : if k <= limit : name=prefix+str(k) glo[name]=val print("created variable %s = %s" % (name, val) ) else : print("list %s has %d elements but only 7 was printed" % ( mylist_name, len(mylist) ) ) break def rla (**kargs) : rl(prefix="a", **kargs) def rlb (**kargs) : rl(prefix="b", **kargs) print print("auxiliary functions `rl` `rla` and `rlb` have been defined")
Example how this works
$ ipython='ipython --colors Linux --autocall=2 In [17]: l=[1,2,3,1,2,3,1,2,3,1,2,3] # instead of typing l[0] or l[1] etc we can now use this variables In [18]: rl -------> rl() created variable l0 = 1 created variable l1 = 2 created variable l2 = 3 created variable l3 = 1 created variable l4 = 2 created variable l5 = 3 created variable l6 = 1 created variable l7 = 2 list l has 24 elements but only 7 was printed In [2]: a=l In [6]: a Out[6]: [1, 2, 3, 1, 2, 3, 1, 2, 3, 1, 2, 3] In [7]: rl(a) __ [1, 2, 3, 1, 2, 3, 1, 2, 3, 1, 2, 3] _ [1, 2, 3, 1, 2, 3, 1, 2, 3, 1, 2, 3] a [1, 2, 3, 1, 2, 3, 1, 2, 3, 1, 2, 3] _6 [1, 2, 3, 1, 2, 3, 1, 2, 3, 1, 2, 3] _4 [1, 2, 3, 1, 2, 3, 1, 2, 3, 1, 2, 3] l [1, 2, 3, 1, 2, 3, 1, 2, 3, 1, 2, 3] created variable l0 = 1 created variable l1 = 2 created variable l2 = 3 created variable l3 = 1 created variable l4 = 2 created variable l5 = 3 created variable l6 = 1 created variable l7 = 2 list ['a', 'l'] has 12 elements but only 7 was printed In [10]: a Out[10]: [1, 2, 3, 1, 2, 3, 1, 2, 3, 1, 2, 3] In [11]: rlb -------> rlb() created variable b0 = 1 created variable b1 = 2 created variable b2 = 3 created variable b3 = 1 created variable b4 = 2 created variable b5 = 3 created variable b6 = 1 created variable b7 = 2 list a has 12 elements but only 7 was printed
References
No comments:
Post a Comment