基本上我正在编写一个脚本,我想从2D列表中获取相邻值.我基本上实现了一个简单的版本,我在其中获取索引并在所有方向上添加和减去一个,并使用a捕获任何超出范围的索引try except.
try:
keys.append(keyboard[index[0]][index[1]-1])
except IndexError:
pass
try:
keys.append(keyboard[index[0]][index[1]+1])
except IndexError:
pass
try:
keys.append(keyboard[index[0]-1][index[1]-1])
keys.append(keyboard[index[0]-1][index[1]])
keys.append(keyboard[index[0]-1][index[1]+1])
except IndexError:
pass
try:
keys.append(keyboard[index[0]+1][index[1]-1])
keys.append(keyboard[index[0]+1][index[1]])
keys.append(keyboard[index[0]+1][index[1]+1])
except IndexError:
pass
Run Code Online (Sandbox Code Playgroud)
但是当然,当我运行它时,我从0中减去1时没有捕获异常,我只是索引列表的最后一个元素.
我可以测试0值,但那意味着我正在使用2个不同的测试来确定什么是有效索引,并且一直使用if语句然后我觉得它会比这更麻烦(因为我必须嵌套在那个案子).另外我觉得如果我知道一种方法可以做到这一点,那么在我打算只使用正值的未来情况下这可能是有价值的.
是否有一种方法或方法从列表索引强制python拒绝负数而只取正值?
Mes*_*ssa 12
您可以创建列表的子类并重新定义__getitem__以检查非负索引.
class mylist (list):
def __getitem__(self, n):
if n < 0:
raise IndexError("...")
return list.__getitem__(self, n)
keyboard = mylist() # instead of []
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
748 次 |
| 最近记录: |