通常情况下,我发现需要成对处理列表.我想知道哪个是pythonic和有效的方法,并在谷歌上找到了这个:
pairs = zip(t[::2], t[1::2])
Run Code Online (Sandbox Code Playgroud)
我认为这是pythonic足够的,但在最近讨论成语与效率之后,我决定做一些测试:
import time
from itertools import islice, izip
def pairs_1(t):
return zip(t[::2], t[1::2])
def pairs_2(t):
return izip(t[::2], t[1::2])
def pairs_3(t):
return izip(islice(t,None,None,2), islice(t,1,None,2))
A = range(10000)
B = xrange(len(A))
def pairs_4(t):
# ignore value of t!
t = B
return izip(islice(t,None,None,2), islice(t,1,None,2))
for f in pairs_1, pairs_2, pairs_3, pairs_4:
# time the pairing
s = time.time()
for i in range(1000):
p = f(A)
t1 = time.time() - s
# time using the pairs …Run Code Online (Sandbox Code Playgroud) 所述VBA的文档定义了下面的令牌:
special-form = “Array“ / “Circle” / “Input” / “InputB” / “LBound” / “Scale” / “UBound”
Run Code Online (Sandbox Code Playgroud)
根据文件记录:
甲特殊形式是一个保留标识符,其在表达式中使用,就好像它是一个程序中定义的过程的名称,但其具有用于它的参数特殊句法规则.
但是没有提到这些关键字的用途,也没有提及数量,参数类型和返回值.
有些记录在其他地方:
我的问题是:Circle和Scale
的目的是什么?它们是如何使用的?
我找到了Circle的正确(奇数)语法,它与BASIC语句相同
CIRCLE(xcenter, ycenter), radius[,[color][,[start],[end][,aspect]]]
Run Code Online (Sandbox Code Playgroud)
并且没有给出语法错误(我没有发现任何提及Scale虽然它似乎没有任何参数)但我不能将它分配给变量,如果我尝试运行下面的代码(这是语法上的正确)我收到以下错误:
没有合适对象的方法无效
码:
Sub test1()
Circle (5, 5), 10
End Sub
Sub test2()
Scale
End Sub
Run Code Online (Sandbox Code Playgroud) 浏览了一下之后,我仍然无法弄清楚这一点.我已将HTML页面及其images目录添加到Xcode中的项目资源组中(复制它们).
当我尝试使用以下代码加载WebView时,文本显示正常,但未加载图像.
NSString *path = [[[NSBundle mainBundle] resourcePath] stringByAppendingPathComponent:@"index.html"];
NSString *htmlContent = [NSString stringWithContentsOfFile:path];
NSURL *url = [NSURL fileURLWithPath:[[NSBundle mainBundle] bundlePath]];
[[tempWebView mainFrame] loadHTMLString:htmlContent baseURL:url];
Run Code Online (Sandbox Code Playgroud)
编辑:抱歉延迟,这里有一些失败的基本HTML.
<html>
<body>
<img src="images/bg.png"></img>
</body>
</html>
Run Code Online (Sandbox Code Playgroud)
我编辑的代码看起来像这样 -
NSString *path = [[NSBundle mainBundle] pathForResource:@"index" ofType:@"html"];
NSURL *url = [NSURL fileURLWithPath:path];
[[webView1 mainFrame] loadRequest:[NSURLRequest requestWithURL:url]];
Run Code Online (Sandbox Code Playgroud)
编辑2:刚刚意识到这是路径的问题.显然<img src = "images/bg.png">不起作用,但如果我将bg.png复制到根目录并说<img src = "bg.png">一切正常.我仍然不确定我在哪里出错了.
我正在用Python实现一个PEG解析器生成器,到目前为止我已经取得了成功,除了"剪切"功能,其中任何人都知道Prolog必须知道的.
这个想法是在!解析了cut()符号之后,不应该在同一级别尝试替代选项.
expre = '(' ! list ')' | atom.
Run Code Online (Sandbox Code Playgroud)
意味着在(看到之后,解析必须成功,或者在不尝试第二个选项的情况下失败.
我正在使用Python的(非常有效的)异常系统来强制回溯,所以我尝试了一个特殊的FailedCut例外,它将中止封闭的选择,但这不起作用.
任何指向如何在其他解析器生成器中实现此功能的指针都会有所帮助.
也许我遇到的问题是缺乏地方性.为规则的左侧部分生成的代码将类似于:
cut_seen = False
try:
self.token('(')
cut_seen = True
self.call('list')
self.token(')')
except FailedParse as e:
if cut_seen:
raise FailedCut(e)
raise
Run Code Online (Sandbox Code Playgroud)
然后,为choice(|)运算符生成的代码将跳过以下选项,如果它捕获a FailedCut.我所说的缺乏地方性的意思是,捕捉的选择FailedCut可能会在通话中深入,因此产生的效果太难以辨别.
而不是为序列生成代码尝试通知封闭的切割选择,我可以让选择生成的代码提防它们.这会使剪辑的范围非常局部,与Prolog不同,但足以满足我在PEG解析器中的需求,即在看到某个令牌序列后提交选项,因此错误报告指的是该位置在源中,而不是可能已有其他选项的另一个位置.
我刚刚想到,如果为规则/谓词生成的代码捕获FailedCut并将其转换为正常FailedParse异常,则剪切将具有正确的范围.
在提到@false的问题时,这里是我想要工作的完整示例:
start = expre ;
expre = named | term ;
named = word ':' ! term;
term = word ;
Run Code Online (Sandbox Code Playgroud)
在那个语法中,word可以通过named或者达到 …
简单使用Python的str.format()方法:
>>> '{0}'.format('zero')
'zero'
Run Code Online (Sandbox Code Playgroud)
十六进制,八进制和二进制文字不起作用:
>>> '{0x0}'.format('zero')
KeyError: '0x0'
>>> '{0o0}'.format('zero')
KeyError: '0o0'
>>> '{0b0}'.format('zero')
KeyError: '0b0'
Run Code Online (Sandbox Code Playgroud)
根据替换字段语法,他们应该:
Run Code Online (Sandbox Code Playgroud)replacement_field ::= "{" [field_name] ["!" conversion] [":" format_spec] "}" field_name ::= arg_name ("." attribute_name | "[" element_index "]")* arg_name ::= [identifier | integer] attribute_name ::= identifier element_index ::= integer | index_string index_string ::= <any source character except "]"> + conversion ::= "r" | "s" format_spec ::= <described in the next section>
的整数语法如下:
Run Code Online (Sandbox Code Playgroud)longinteger ::= integer ("l" …
我的同事PaulS向我询问了以下内容:
我正在为一种现有语言(SystemVerilog-IEEE标准)编写一个解析器,并且该规范中包含一个规则,该规则在结构上与此类似:
cover_point
=
[[data_type] identifier ':' ] 'coverpoint' identifier ';'
;
data_type
=
'int' | 'float' | identifier
;
identifier
=
?/\w+/?
;
Run Code Online (Sandbox Code Playgroud)
问题在于解析以下合法字符串时:
anIdentifier: coverpoint another_identifier;
Run Code Online (Sandbox Code Playgroud)
anIdentifier匹配data_type成功(通过其标识符选项),这表示Grako正在寻找另一个标识符,然后失败。然后,它不会尝试在没有data_type部分的情况下进行解析。
我可以如下重写规则,
cover_point_rewrite
=
[data_type identifier ':' | identifier ':' ] 'coverpoint' identifier ';'
;
Run Code Online (Sandbox Code Playgroud)
但我想知道是否:
这是一个一般性的PEG问题,还是一个工具(Grako)?
安装节点,运行 npm init 创建 package.json,安装 Parcel。使用 npx Parcel index.html 运行服务器来运行服务器。然后我将package.json中的“scripts”更改为“start”:“parcel index.html”,并运行npm run start,它也运行服务器没有问题。然后我添加到“scripts”“build”:“parcel build index.html”并运行 npm run build。但这不起作用...\n我收到以下错误...
\n> vjezba-17@1.0.0 build \n> parcel build index.html\n\n\xc3\x97 Build failed.\n\n@parcel/namer-default: Target "main" declares an output file path of "index.js" which does not match the compiled bundle type "html".\n\n C:\\Users\\ijevr\\Desktop\\JavaScript\\vjezba 17\\package.json:4:11\n 3 | "version": "1.0.0",\n > 4 | "main": "index.js",\n > | ^^^^^^^^^^ Did you mean "index.html"?\n 5 | "scripts": {\n 6 | "start": "parcel index.html",\n\n \xe2\x84\xb9 Try changing the file extension of …Run Code Online (Sandbox Code Playgroud) 我需要在 Django 项目中使用“Role”这个词而不是“Group”。
我试过 i18n,但可以auth选择翻译。
我也尝试用django.contrib.auth一个叫做“角色”的myaqpp.auth地方替换Group。
进行此重命名的正确方法是什么?
您是否知道任何现代语言,其中数组被标记为列/行而不是C++/Java/C#row/column中的数组?
parsing ×2
peg ×2
python ×2
arrays ×1
backtracking ×1
cocoa ×1
django ×1
django-admin ×1
ebnf ×1
grako ×1
grammar ×1
idioms ×1
json ×1
list ×1
npm ×1
prolog ×1
prolog-cut ×1
python-2.7 ×1
python-3.3 ×1
slice ×1
syntax ×1
vba ×1
webview ×1
zip ×1