我想知道一个列表是否只包含一个元素,而不使用len.
在这两种解决方案之间,最pythonic的方法是什么?或者也许这些都不是pythonic,如果是,那又是什么?
解决方案 a:删除位置 1 处的项目,除了 an,IndexError所以我知道只有 1 个项目。
try:
a_list.pop(1):
except IndexError:
#blah
Run Code Online (Sandbox Code Playgroud)
解决方案b:使用切片删除第一个元素并检查列表现在是否为空
if not a_list[1:]:
# blah
Run Code Online (Sandbox Code Playgroud)
Python 的哲学之一是,请求宽恕比请求许可更容易(Python 词汇表)。
从这个意义上说,检查列表是否至少有一个元素的最 Pythonic 方法是尝试并访问 index 处的元素0。
try:
some_list[0]
except IndexError:
print("some_list is empty").
Run Code Online (Sandbox Code Playgroud)
请注意,会pop改变列表,这不是您在测试中想要的。
现在如果你想检查一个列表是否只有一个元素,一系列的tryandexcept可以完成这项工作,但它会变得不可读。
最好的方法可能是直接len检查:
if len(some_list) == 1:
print("some_list has exactly one element")
Run Code Online (Sandbox Code Playgroud)
您评论说您不想使用len.
我建议你使用我上面提到的try和的继承except:
try:
l[0]
except IndexError:
print("length = 0")
else:
try:
l[1]
except IndexError:
print("length = 1")
else:
print("length > 1")
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
15736 次 |
| 最近记录: |