我在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) 我不确定错误存在于何处.相同的代码正在为协作者工作,我无法让它工作!让我知道其他代码需要显示的内容,我不确定错误在哪里...在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) 我正在寻找一种方法来衡量两个句子之间的语义距离.假设我们有以下句子:
(S1) The beautiful cherry blossoms in Japan.
(S2) The beautiful Japan.
Run Code Online (Sandbox Code Playgroud)
通过消除单词"cherry","blossoms"和"in"从S1创建S2.我想定义一个在S1和S2之间提供高距离的函数.其原因在于它们确实具有显着不同的含义,因为美丽改变了樱花,而不是日本.
我有一个 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)
谁能指出我可能出错的地方?我已经尝试环顾了好几个小时,但一直无法弄清楚解决方案是什么。
提前致谢
我有一个操作符,操作变量列表,如下所示:
(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技能:(.
很抱歉问这个问题,但它看起来像是打破了参考透明度.
在探索问题并将其分解时(问题是获取列表列表的对角元素)我想出了这个(正确工作)解决方案:
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)