Python (1..n) 语法?

6 投票
4 回答
1481 浏览
提问于 2025-04-16 02:57

我在这个Sage wiki 页面的代码中看到以下代码:

@interact
def _(order=(1..12)):

请问这个(1..n)的写法是Sage特有的吗?还是说它在Python中也有?另外,这个写法具体是干什么的呢?

4 个回答

1

这不是Python的语法。我猜这段代码是用来生成从1到12的一个范围。

10

曾经有一个关于在Python中添加这种表示法的提案,但最后被拒绝了。罗伯特·布拉德肖决定还是要实现这个功能,不过是为Sage的预处理器实现的。他实现了以下几种表示法:

  • (a..b) -- 类似于xrange,所以这是一个迭代器

  • [a..b] -- 列表,包括起始和结束的值

  • [a,b,..,c] -- 等差数列

13

这是特定于Sage的内容。你可以使用 preparse 来查看它是如何被简化成下面的样子的:

sage: preparse("(1..12)")
'(ellipsis_iter(Integer(1),Ellipsis,Integer(12)))'

关于 ellipsis_iter 的文档可以在 这里 找到,关于预解析器的信息可以在 这里 查看。

撰写回答