小编Mik*_*H-R的帖子

如何在python中访问给定变量的名称?

我在python中编程,需要访问我给对象的名称,以便能够将其作为字符串传递(与另一个字符串连接).

我需要这样做的原因是我使用的程序强制我创建一个全局(在我的情况下是一个字典),我正在编写一个函数来处理几个不同的对象(每个对象都有类似的集合)属性,例如,对象1的长度为2(在我的情况下表示2个神经元)标记为0和1,并且每个属性都有4个属性a,b,c,d.我想创建这些属性的"字典文件树"但是object1和object 2都是同一个类的2个实例,因此我需要将第一级键更改为'NAME1_0,'NAME1_1','NAME2_0','NAME2_1').

def Init(neuron,input):
#Initialises the neuron group, arguements are neuron (neurongroup) and input (neurongroup)
global dict
dict={}
for x in range(0,len(neuron)):
    neuron[x].L=0
    neuron[x].G=0
    neuron[x].ron=1/period
    neuron[x].roff=1/period
    dict[x]={'tau_on':0.5,
             'Non_off':neuron[x].roff*0.5,
             'Non_off':neuron[x].ron*0.5,
             'Ni_on':ones(len(input))*qon*0.5,
             'Ni':ones(len(input))*qoff*0.5+ones(len(input))*qon*0.5,
             'p_current':0,
             'p_previous':0,
             'my_tau_on':[],
             'my_Non_off':[],
             'my_Noff_on':[],
             'my_Ni_on':[],
             'my_Ni':[],
             'my_p_on':[],
             'my_ron':[],
             'my_roff':[],
             'my_theta':[],
             'my_weights':[],
             'my_record_times':[]}
     dict['%s' % x, neuron]=dict.pop(x)
Run Code Online (Sandbox Code Playgroud)

不起作用,因为它不给分配给对象的名称,而只是给对象本身的名称.对于我的问题的一个更小的情况

NAME1=4
def func(x):    #creates string of 'NAME1'
    print 'x'

func(NAME1)
#output='NAME1'
Run Code Online (Sandbox Code Playgroud)

python object

3
推荐指数
1
解决办法
162
查看次数

strftime没有方法错误

我不确定错误存在于何处.相同的代码正在为协作者工作,我无法让它工作!让我知道其他代码需要显示的内容,我不确定错误在哪里...在db中?谢谢.

NoMethodError in Static_pages#home
undefined method `strftime' for nil:NilClass
Run Code Online (Sandbox Code Playgroud)

...的意见/共享/ _event_detail.html.erb

         </span>
       </div>
       <div class="span6 start_date">
         <%=event.start_date.strftime('%B %d, %Y') %>
       </div>
     </div>
     <div class="row-fluid"> 
Run Code Online (Sandbox Code Playgroud)

ruby-on-rails strftime nomethoderror

2
推荐指数
1
解决办法
1988
查看次数

两句话的意思之间的距离

我正在寻找一种方法来衡量两个句子之间的语义距离.假设我们有以下句子:

(S1) The beautiful cherry blossoms in Japan. 
(S2) The beautiful Japan.
Run Code Online (Sandbox Code Playgroud)

通过消除单词"cherry","blossoms"和"in"从S1创建S2.我想定义一个在S1和S2之间提供高距离的函数.其原因在于它们确实具有显着不同的含义,因为美丽改变了樱花,而不是日本.

nlp linguistics semantic-analysis semantics

2
推荐指数
2
解决办法
2316
查看次数

Capybara drag_to 函数抛出 NotImplementedError

我有一个 Rails 应用程序,我正在尝试测试拖放功能,我正在使用 capybara 和 rspec 以及 jquery ui 进行拖动,它在浏览器中工作正常,但我无法进行工作测试它。我得到的错误如下:

source_element.drag_to(dest_element)
NotImplementedError: NotImplementedError
Run Code Online (Sandbox Code Playgroud)

我有一个简单的测试文件,如下所示:

describe "display index page" do
  it "try drag and drop" do
    dest_element = find('#list_'+list.id.to_s+' #sortable')
    source_element = find('#list_'+other_list.id.to_s)
    source_element.drag_to dest_element
  end
end
Run Code Online (Sandbox Code Playgroud)

我的 Html 看起来像这样(javascript 配置正确并且一切都在浏览器中运行):

<ul id="sortable" class="ui-sortable">
  <li id="list_20" class="sort">
  <li id="list_121" class="sort">
    <span>Content</span>
    <ul id="sortable" class="ui-sortable"> </ul>
  </li>
</ul>
Run Code Online (Sandbox Code Playgroud)

谁能指出我可能出错的地方?我已经尝试环顾了好几个小时,但一直无法弄清楚解决方案是什么。

提前致谢

rspec jquery-ui ruby-on-rails capybara

1
推荐指数
1
解决办法
912
查看次数

是否有emacs lisp splat运算符或执行此类操作的其他方法?

我有一个操作符,操作变量列表,如下所示:

(myfunc arg1 nil arg2 arg3)
Run Code Online (Sandbox Code Playgroud)

我需要选择(依赖于我们将调用的布尔变量my_bool)向该列表添加一个额外的参数,以便函数调用如下所示:

(myfunc arg1 nil arg2 added_argument arg3)
Run Code Online (Sandbox Code Playgroud)

我的第一个想法是使用if块这样做:

(myfunc arg1 nil arg2 (if mybool t nil) arg3)
Run Code Online (Sandbox Code Playgroud)

但是如果mybool等于nil函数语法不允许的话,那将导致nil .

我的第二个想法是,也许我们可以过滤列表为nil并删除它,但我们无法因为首先出现的nil(或者说我想不出办法,我很乐意被证明是错误的,只是寻找解决方案).

我的第三个想法是,如果我们有像红宝石那样的splat操作符'我们可以过滤然后splat,所有都将被整理出来,所以这样:

(myfunc arg1 nil (mysplat arg2 (filter (!= nil) (if mybool t nil)))) arg3)
Run Code Online (Sandbox Code Playgroud)

但是我找不到splat运算符(技术上更像是一个列表解构运算符)(PS上面的代码是近似的,因为它是一个不起作用的解决方案,所以我确定在那里.

所以我的问题是如何可选地向函数调用添加单个参数,如果不这样做,则不会产生nil作为该参数.

在此先感谢,对不起我的新秀emacs lisp技能:(.

emacs elisp destructuring

1
推荐指数
1
解决办法
482
查看次数

这个错误的原因是什么?为什么我认为它违反了引用透明度?

很抱歉问这个问题,但它看起来像是打破了参考透明度.

在探索问题并将其分解时(问题是获取列表列表的对角元素)我想出了这个(正确工作)解决方案:

import Data.List

nums = [[1,2,3,4], [5,6,7,8], [9,10,11,12], [13,14,15,16]]

southwest = transpose . zipWith (drop) [0..]
southwest2 = transpose . zipWith (drop) [0..] . transpose

my_ans = southwest nums ++ southwest2 nums
Run Code Online (Sandbox Code Playgroud)

(注意它包含两次中间行,这对我的用例来说不是问题)

现在很明显,很容易被重构.在第一次尝试以无点样式编写它之后,我认为通过这些尝试简单地编写它是非易点的:

my_ans2 x = (diagFunc x) ++ (diagFunc . transpose x)
              where diagFunc = transpose . zipWith (drop) [0..]

my_ans3 x = concat [(diagFunc x), (diagFunc . transpose x)]
              where diagFunc = transpose . zipWith (drop) [0..]
Run Code Online (Sandbox Code Playgroud)

现在这些编译和作品都不会让我感到困惑,因为在我看来,这会破坏参照透明度.有人可以解释为什么我错了,以及如何正确地编写这个函数(额外的点是以无点的方式编写它,因为我不能).

作为参考,错误在这里:

/home/michael/scripts/temp.hs:14:30:
    Couldn't match expected type ‘[[a]]’
                with …
Run Code Online (Sandbox Code Playgroud)

haskell

1
推荐指数
1
解决办法
115
查看次数