我怎样才能在变量中使用冒号(:)

时间:2016-11-10 15:56:30

标签: python list python-3.x variables

我想写这样的代码:

index = 0:2
print(list[index])

但这不起作用。

有什么办法可以将[...:...]语法的所有部分存储在变量中吗?

2 个答案:

答案 0 :(得分:19)

您需要slice() object

index = slice(0, 2)
print(somelist[index])

slice()将您可以在[start:stop:stride]订阅语法中指定的开始,停止和步幅值建模为对象。

来自文档:

  

返回表示range(start, stop, step)指定的索引集的slice对象。开始和步骤参数默认为None。 Slice对象具有只读数据属性startstopstep,它们只返回参数值(或它们的默认值)。

在幕后,Python实际上在调用自定义slice()方法时将订阅转换为__getitem__对象:

>>> class Foo(object):
...     def __getitem__(self, item):
...         return item
...
>>> Foo()[42:81:7]
slice(42, 81, 7)
>>> Foo()[:42]
slice(None, 42, None)

一个可行的替代方案是将开始和停止存储为单独的值:

startindex = 0
stopindex = 2
print(somelist[start:stop])

答案 1 :(得分:11)

您可以改为创建slice对象:

index = slice(0,2)
print(lst[index])

注意不要使用list作为名称,以避免隐藏内置list功能。

来自文档:

  

slice(start, stop[, step])

     

返回表示由指定的索引集的切片对象   range(start, stop, step)