假设我们有2d数组:
ar = [[1,2],
[3,4]]
if ar[1][1]:
#works
if not ar[3][4]:
#breaks!!
因为我是python的新手,需要知道优雅的语法是什么。
答案 0 :(得分:7)
Python非常受欢迎的 EAFP 方法可以通过异常处理来实现。
try:
print(ar[i][j]) # i -> row index, j -> col index
except IndexError:
print('Error!')
另一种方法,也称为 LYBL 方法,将使用if
检查:
if i < len(ar) and j < len(ar[i]):
print(ar[i][j])
这是“一线”版本(杀死可读性,但你似乎想要):
print(ar[i][j] if i < len(ar) and j < len(ar[i]) else "Error")
答案 1 :(得分:0)
如果这是您需要经常进行的检查,您可以使自己成为一个小帮手功能,以便您的主要代码更好地流动:
def has_item_at(items, i, j):
return i < len(items) and j < len(items[i])
def main():
items = [[1, 2], [3, 4]]
if has_item_at(items, 1, 1):
# do stuff
if has_item_at(items, 3, 4):
# don't do stuff
如果你需要检查存在并检索项目,你可以这样做:
def get_item(items, i, j, default=None):
if i < len(items) and j < len(items[i]):
return items[i][j]
return default
def main():
items = [[1, 2], [3, 4]]
item = get_item(items, 1, 1)
if item is not None:
# do stuff