SyntaxError:关于的语法无效从钥匙听写美国政府

2024-04-26 04:45:51 发布

您现在位置:Python中文网/ 问答频道 /正文

工作的原始代码。你知道吗

tbl = dict.fromkeys(i for i in xrange(sys.maxunicode) if unicodedata.category(unichr(i)).startswith('P'))

但是当我想查看()中的内容时,我得到了错误消息。你知道吗

i for i in xrange(sys.maxunicode) if unicodedata.category(unichr(i)).startswith('P')
  File "<ipython-input-58-3979c9c43bba>", line 1
    i for i in xrange(sys.maxunicode) if unicodedata.category(unichr(i)).startswith('P')
        ^
SyntaxError: invalid syntax

而括号之间的代码让我很困惑,原来的代码似乎等于下面的代码,但为什么呢?你知道吗

for i in xrange(sys.maxunicode):
    if unicodedata.category(unichr(i)).startswith('P'):
        a.append(i)
tbl=dict.fromkeys(a)

Tags: 代码in内容forifsysdicttbl
1条回答
网友
1楼 · 发布于 2024-04-26 04:45:51

有一个generator expression,通常必须用括号括起来:

(i for i in xrange(sys.maxunicode) if unicodedata.category(unichr(i)).startswith('P'))

当表达式是调用的唯一参数时,括号是可选的,这就是为什么在dict.fromkeys()调用中看不到任何参数的原因。你知道吗

如果要查看生成器表达式生成的值,可以使用list comprehension,方法是用方括号替换圆括号:

[i for i in xrange(sys.maxunicode) if unicodedata.category(unichr(i)).startswith('P')]

生成器表达式生成一个生成器,必须对该生成器进行迭代才能获得它的所有值,而列表理解则立即迭代并生成一个列表。你知道吗

相关问题 更多 >