【发布时间】:2011-05-31 18:19:04
【问题描述】:
http://docs.python.org/reference/expressions.html#slicings 的文档说(摘录):
5.3.3。切片
切片选择序列对象中的一系列项目(例如,字符串、元组或列表)。
slicing ::= simple_slicing | extended_slicing
simple_slicing ::= primary "[" short_slice "]"
extended_slicing ::= primary "[" slice_list "]"
slice_list ::= slice_item ("," slice_item)* [","]
slice_item ::= expression | proper_slice | ellipsis
proper_slice ::= short_slice | long_slice
short_slice ::= [lower_bound] ":" [upper_bound]
long_slice ::= short_slice ":" [stride]
lower_bound ::= expression
upper_bound ::= expression
stride ::= expression
ellipsis ::= "..."
简单切片的语义如下。主对象必须评估为序列对象...
扩展切片的语义如下。主节点必须评估为映射对象,...
问题:
为了支持 [1,2,3][a:b:c] 表示法,语言参考要求 lists 是 映射对象(stride 仅用于“扩展切片”,用于映射对象)。那么,语言参考是否损坏(可能他们只是在引入What's New in Python2.3: Extended Slices 时忘记更新它?)?
此外,切片显然不仅适用于序列对象(参见上面的第一句话)。
还是只有我一个人? ;)
附言
有趣的是,http://docs.python.org/release/3.1.3/reference/expressions.html#slicings 上的 Python 3 文档说:
切片选择序列对象中的一系列项目(例如,字符串、元组或 列表)...
[“统一”切片定义,此处不区分“扩展”和“简单”]
切片的语义如下。主节点必须评估为映射对象,...
【问题讨论】:
-
是我一个人,还是我根本听不懂你?你能澄清一下吗?
-
@ultimatebuster 或者我们俩......跨度>
-
我实际上从未听说过“跨步”这个词。根据我在 3 分钟内得出的结论,是步骤?喜欢
list[start:stop:stride]? -
换句话说,你想做什么? xD
-
@mlvljr,同意你的观点,语言参考并不严格正确