【发布时间】:2014-05-19 22:43:45
【问题描述】:
我有一个脚本尝试通过二分搜索读取子集的开始点和结束点,然后使用这些值创建切片以进行进一步处理。
我注意到当这些变量没有设置时(搜索返回 None),代码仍然会运行,最后我注意到从 None 到 None 的切片就像检查整个列表一样工作(见下面的例子) .
#! /usr/bin/env python
list = [1,2,3,4,5,6,7,8,9,10]
for x in list[None:None]:
print x
有谁知道为什么选择将list[None:None] 简单地视为list[:],至少我认为会发生这种情况(如果我错了,请纠正我)。我个人认为在这种情况下抛出 TypeError 是可取的。
【问题讨论】:
-
我怀疑这个选择实际上是将
list[:]视为list[None:None]。 -
可能正是您的用例。如果您从其他地方设置了
start和end点,如果list[None:None]不起作用,那么您将没有恢复的机会。这样你就可以提前测试if not any(x is None for x in [start,end]):