Python 在“L[2:4]”中,“2:4”是什么?
我读到Python中的所有内容都是对象。那么Python 在“L[2:4]”中,“2:4”是什么?,python,slice,Python,Slice,我读到Python中的所有内容都是对象。那么L[2:4]中的2:4是什么呢?它是一个切片对象吗?当我在解释器中键入2:4时,会出现一个SyntaxError。否,2:4不是独立的语法。语法将:-分隔的表达式转换为切片()对象,并且仅在[]项索引的上下文中有效切片()是一种内部类型,请参阅 lst[2:4]被转换为lst[slice(2,4,None)]。使用带有\uuu getitem\uuu方法的自定义类时,可以看到这一点: >>> class Demo: ... d
L[2:4]
中的2:4
是什么呢?它是一个切片对象吗?当我在解释器中键入2:4
时,会出现一个SyntaxError
。否,2:4
不是独立的语法。语法将:
-分隔的表达式转换为切片()
对象,并且仅在[]
项索引的上下文中有效<代码>切片()是一种内部类型,请参阅
lst[2:4]
被转换为lst[slice(2,4,None)]
。使用带有\uuu getitem\uuu
方法的自定义类时,可以看到这一点:
>>> class Demo:
... def __getitem__(self, item):
... return item
...
>>> d = Demo()
>>> d[2]
2
>>> d[2:4]
slice(2, 4, None)
>>> d[2::-2]
slice(2, None, -2)
您可以直接创建这些对象,slice()
是内置类型:
>>> help(slice)
Help on class slice in module builtins:
class slice(object)
| slice(stop)
| slice(start, stop[, step])
|
| Create a slice object. This is used for extended slicing (e.g. a[0:10:2]).
[ ... ]
是:
部分触发切片()
对象;您甚至可以传入多个切片,即使没有标准库类型支持这样的索引:
>>> d[10:, :-5, ::-1, :]
(slice(10, None, None), slice(None, -5, None), slice(None, None, -1), slice(None, None, None))
该元组中的最后一个片段仅由一个:
表示
当您在索引中使用…
时,将创建相关对象省略号:
>>> d[...]
Ellipsis
也没有标准的库类型使用它,但是Numpy项目严重依赖于这个单例对象和多片功能来处理结构化数据。不,2:4
不是独立的语法。语法将:
-分隔的表达式转换为切片()
对象,并且仅在[]
项索引的上下文中有效<代码>切片()
是一种内部类型,请参阅
lst[2:4]
被转换为lst[slice(2,4,None)]
。使用带有\uuu getitem\uuu
方法的自定义类时,可以看到这一点:
>>> class Demo:
... def __getitem__(self, item):
... return item
...
>>> d = Demo()
>>> d[2]
2
>>> d[2:4]
slice(2, 4, None)
>>> d[2::-2]
slice(2, None, -2)
您可以直接创建这些对象,slice()
是内置类型:
>>> help(slice)
Help on class slice in module builtins:
class slice(object)
| slice(stop)
| slice(start, stop[, step])
|
| Create a slice object. This is used for extended slicing (e.g. a[0:10:2]).
[ ... ]
是:
部分触发切片()
对象;您甚至可以传入多个切片,即使没有标准库类型支持这样的索引:
>>> d[10:, :-5, ::-1, :]
(slice(10, None, None), slice(None, -5, None), slice(None, None, -1), slice(None, None, None))
该元组中的最后一个片段仅由一个:
表示
当您在索引中使用…
时,将创建相关对象省略号:
>>> d[...]
Ellipsis
也没有标准的库类型使用它,但是Numpy项目严重依赖于这个单例对象和多片功能来处理结构化数据。Python允许对列表和字符串进行切片。您需要为L创建一个对象,以使此语法正常工作。请尝试以下示例:
>>> L = [0,1,2,3,4,5,6]
>>> L[2:4]
>>> L = "This is a test"
>>> L[2:4]
>>> L[2:]
>>> L[:4]
>>> L[-3:]
Python允许对列表和字符串进行切片。您需要为L创建一个对象,以使此语法正常工作。请尝试以下示例:
>>> L = [0,1,2,3,4,5,6]
>>> L[2:4]
>>> L = "This is a test"
>>> L[2:4]
>>> L[2:]
>>> L[:4]
>>> L[-3:]
所以如果也是一个对象?;)所以如果也是一个对象?;)