我想使用变量来存储切片表达式.这是我尝试的:
if variable is not None:
var = variable
elif self.__filter is not None:
var = self.__filter
else:
# this doesn't work, : alone understandably gives a syntax error
var = ':'
Run Code Online (Sandbox Code Playgroud)
然后在这里使用var:
return stuff[var]
Run Code Online (Sandbox Code Playgroud)
我想这样做是为了在我的代码中获得更好的结构.另一种方法是根据大小写返回这个表达式:
return stuff[variable]
return stuff[self.__filter]
return stuff[:]
Run Code Online (Sandbox Code Playgroud)
提出例外: ValueError: invalid literal for int() with base 10
有没有办法将冒号分配给var,因此它可以用于切片表达式(转义或类似的东西)或者我必须使用var = slice(0, self.getNumberOfVariables())?
PS:我在询问前做了搜索,但没有找到这样的东西.对不起,如果我错过了重复.
不可能直接使用结肠.它是一种操作的字面符号; Python通常不允许直接使用这种标点符号,而是需要使用函数(参见算术运算符和operator模块中的相应函数).
要使用的函数是内置函数slice,它返回切片的显式表示.使用slice(None)包括一切.
一个例子:
>>> s = slice(None)
>>> x = range(10)
>>> x[s]
[0, 1, 2, 3, 4, 5, 6, 7, 8, 9]
Run Code Online (Sandbox Code Playgroud)
这是一篇旧帖子,但它刚刚作为谷歌的热门结果出现,所以我想我会回答它以帮助其他人。
:切片中的冒号只是 之间的分隔符[start:stop:step]。通常没有明确写入的是、或None之一保留其默认值。startstopstep
这在示例中更容易看出:
# Slice with all parameters specified
# start:1, stop:4, step:1
seq[1:4:1]
# Slice with default step value (default=1)
# start:1, stop:4, step:1
# All the following are equivalent
seq[1:4:None]
seq[1:4:]
seq[1:4]
# Slice with default stop value (default = len(seq))
# start:1, stop:len(seq), step:1
# All the following are equivalent
seq[1:None:1]
seq[1::1]
# Slice with default step and stop value
# start:1, stop:len(seq), step:1
# All the following are equivalent
seq[1:None:None]
seq[1::]
seq[1:]
# Slice with default start value
# start:1, stop:4, step:1
# All the following are equivalent
seq[None:4:1]
seq[:4:1]
# Slice with all default values
# start:1, stop:len(seq), step:1
# All the following are equivalent
seq[None:None:None]
seq[::]
seq[:]
Run Code Online (Sandbox Code Playgroud)
因此,要回答您的问题,在切片变量中使用:in 是没有意义的,因为您要求使用分隔符。尽管这很令人困惑,因为您不必None在直接创建切片时显式声明,因此这使得它看起来:像一个运算符。
太长了;使用slice类型时,必须明确声明None。所以seq[slice(None, None, None)]相当于seq[::].
| 归档时间: |
|
| 查看次数: |
721 次 |
| 最近记录: |