【发布时间】:2013-03-04 06:52:30
【问题描述】:
我正在尝试对未知深度和形状的嵌套序列执行元组到列表和列表到元组的转换。呼叫已被拨打数十万次,这就是为什么我试图尽可能加快速度。
非常感谢任何帮助。
这是我目前所拥有的......
def listify(self, seq, was, toBe):
temp = []
a = temp.append
for g in seq:
if type(g) == was:
a(self.listify(g, was, toBe))
else:
a(g)
return toBe(temp)
对 tuple 的调用如下所示:
self.listify((...), tuple, list)
编辑: 是的,我完全错过了枚举(来自旧实现)并忘记输入 else 部分。
感谢你们俩的帮助。我可能会选择协程。
【问题讨论】:
-
请问为什么需要这种往返转换?另外,你试过 PyPy 吗?
-
你应该知道Python中有一个固定的递归限制:docs.python.org/library/sys.html#sys.setrecursionlimit
-
您应该为每次转换制作专门的函数。这将节省额外的参数传递和测试
-
这是您的实际代码吗?如果是这样,您似乎不使用
pos,因此可以像enumerate一样摆脱它。 -
你为什么将它作为某个对象的成员来实现?那不应该只是一个功能吗?此外,您似乎忽略了不属于
was类型的项目。是故意的吗?
标签: python performance list nested tuples