Python:使用经过修改的语法访问n维列表中的元素
询问之后,我扩展了已接受的答案,使其适用于二维列表:Python:使用经过修改的语法访问n维列表中的元素,python,list,python-3.x,syntax,indexing,Python,List,Python 3.x,Syntax,Indexing,询问之后,我扩展了已接受的答案,使其适用于二维列表: class List(list): def __call__(self, i): def call(j): return self[i][j] return call class List(list): def __call__(self, i): def call2(j): def call3(k):
class List(list):
def __call__(self, i):
def call(j):
return self[i][j]
return call
class List(list):
def __call__(self, i):
def call2(j):
def call3(k):
return self[i][j][k]
return call3
return call2
和三维列表:
class List(list):
def __call__(self, i):
def call(j):
return self[i][j]
return call
class List(list):
def __call__(self, i):
def call2(j):
def call3(k):
return self[i][j][k]
return call3
return call2
但是如何为n维列表实现此类呢?如果索引值本身是一个: 这确保了可以用
[…]
索引语法处理的任何内容现在也可以用(…)
调用语法处理
我免除了弦;这些也是序列,但您可能不想将其扩展到这些值
演示:
如果索引值本身是一个: 这确保了可以用
[…]
索引语法处理的任何内容现在也可以用(…)
调用语法处理
我免除了弦;这些也是序列,但您可能不想将其扩展到这些值
演示:
从上一个表达式返回对象后应用调用。您无法预先知道是否将调用返回值。例如,您可以使用“将
列表(2)
结果存储在某处”,然后决定稍后调用它,或者根本不调用它。从上一个表达式返回对象后,将应用调用。您无法预先知道是否将调用返回值。例如,您可以将列表(2)
结果存储在某个地方,然后决定稍后调用它,或者根本不调用。这将把字符串转换为列表
s,这可能是预期的行为,也可能不是预期的行为。@SvenMarnach:刚刚得出了相同的结论,已经更新。@SvenMarnach:我正在测试代码,发现我忘记了基串
已被删除:-P@eryksun:还有range()
。这一切都归结为一个选择,即您希望调用语法应用于什么。现在,在索引列表时,我将始终使用此方法。这样,任何阅读我的代码的人都将非常清楚地了解正在发生的事情。这可能会使Malbolge程序员更容易阅读我的代码:这会将字符串转换为List
s,这可能是预期的行为,也可能不是预期的行为。@SvenMarnach:刚刚得出相同的结论,已经更新。@SvenMarnach:我在测试代码时发现我忘记了basestring
-P@eryksun:还有range()
。这一切都归结为一个选择,即您希望调用语法应用于什么。现在,在索引列表时,我将始终使用此方法。这样,任何阅读我的代码的人都将非常清楚地了解正在发生的事情。这可能会让Malbolge程序员更容易阅读我的代码: