我想知道列表是否只包含一个元素,而不使用len
.
在这两种解决方案之间,最Pythonic的方法是什么?或者也许这些都不是Pythonic的,如果是的话那又是什么?
解决方案a:删除位置1处的项目,除了IndexError
所以我知道只有 1 件商品。
try:
a_list.pop(1):
except IndexError:
#blah
解决方案 b:使用切片删除第一个元素并检查列表现在是否为空
if not a_list[1:]:
# blah
Python 的哲学之一是,请求宽恕比请求许可更容易(Python术语表 https://docs.python.org/glossary.html#term-eafp).
从这个意义上说,检查列表是否至少有一个元素的最 Pythonic 方法是尝试访问索引处的元素0
.
try:
some_list[0]
except IndexError:
print("some_list is empty").
注意pop
改变列表,这不是您在测试中想要的。
现在,如果您想检查列表是否有exactly一个元素,一系列try
and except
可以完成这项工作,但它会变得不可读。
最好的方法可能是直接len
check:
if len(some_list) == 1:
print("some_list has exactly one element")
您评论说您不想使用len
.
我建议你使用继承try
and except
我上面提到的:
try:
l[0]
except IndexError:
print("length = 0")
else:
try:
l[1]
except IndexError:
print("length = 1")
else:
print("length > 1")
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)