我从几周开始一直在使用Tkinter。有一两件事我注意到的是,Tkinter的小部件(按钮等)有3种状态:NORMAL,ACTIVE和DISABLED。我了解NORMAL和DISABLED状态。ACTIVE和NORMAL状态之间有什么区别?
考虑这两个执行以下操作的函数:给定一个单词,它会生成一个列表,其中单词中的每个位置都被字母表中的每个字符替换
alphabet = 'abcdefghijklmnopqrstuvwxyz'
Run Code Online (Sandbox Code Playgroud)
版本1(Pythonic):
def replace1_word( word ):
return [word[:w]+alphabet[i]+word[w+1:]
for w in range(len(word))
for i in range(len(alphabet))]
Run Code Online (Sandbox Code Playgroud)
版本2(Unpythonic):
def replace1_word2( word ):
res=[]
for w in range(len(word)):
for i in range(len(alphabet)):
res.append( word[:w] + alphabet[i] + word[w+1:] )
return res
Run Code Online (Sandbox Code Playgroud)
我使用timeit模块运行1000次并测量时间,平均运行时间差异在0.028毫秒到0.040毫秒之间.
我的问题是在第二个版本中代码的哪个部分/行是昂贵的,为什么?它们"似乎"以相同的方式工作,并以列表格式返回相同的结果.
可以说我有以下html:
<img onclick="showStruct(this)" class="expand" src="Images/Plus.png" data-hidden="true" style="display: none;">
<img onclick="showStruct(this)" class="expand" src="Images/Plus.png" data-hidden="false" style="display: inline;">
<img onclick="showStruct(this)" class="expand" src="Images/Plus.png" data-hidden="true" style="display: none;">
Run Code Online (Sandbox Code Playgroud)
如果元素被隐藏,我存储true在data-hidden字段中,因为我必须同时隐藏所有元素并通过在data-hidden字段中存储"状态" ,我确保我知道要再显示哪些元素.即:
<img onclick="showStruct(this)" class="expand" src="Images/Plus.png" data-hidden="true" style="display: none;">
<img onclick="showStruct(this)" class="expand" src="Images/Plus.png" data-hidden="false" style="display: none;">
<img onclick="showStruct(this)" class="expand" src="Images/Plus.png" data-hidden="true" style="display: none;">
Run Code Online (Sandbox Code Playgroud)
我想要做的是,通过使用jquery,display: inline;只为元素设置data-hidden: 'false'?
我有什么(有效):
$(".expanded").each
(function() {
if($(this).attr('data-hidden')=='false'){
$('.expanded').show();
}
});
Run Code Online (Sandbox Code Playgroud)
我的问题是,是否有更好的(更有效的)方式,或者这是唯一的方法吗?