【发布时间】:2010-01-01 12:39:46
【问题描述】:
我必须将 C++ STL 应用程序移植到 Python。我是一名 Python 新手,但已经编程了十多年。我对 STL 有丰富的经验,并且发现它让我对使用 C++ 着迷。这几天我一直在 Google 上搜索以下项目:
- Python STL(希望利用我多年的 STL 经验)
- Python 链表
- Python 高级列表用法
- Python 列表优化
- Python 有序集
并且找到了关于上述主题的帖子,Python 列表上的教程绝对不是高级的,或者死胡同。我对自己没有成功感到非常惊讶,我想我只是因为过度工作和输入错误的搜索词而筋疲力尽!
(我的问题)我能否获得一个 Python STL 包装器,或者一个与 STL 类似的 Python 列表接口?如果没有,有人可以向我指出有关管理非常大的非平凡对象的排序集合的真正高级教程或论文吗?
附:我可以很容易地为一两次使用实现变通办法,但是如果管理层想要移植更多代码,我想准备好立即用等效的 Python 代码替换我找到的任何 STL 代码。是的,我已经测量并且确实需要完全优化代码!我不能只做多余的排序和搜索!
(ADDENDUM) 感谢您的回复,我已经检查了一些参考资料并且很高兴。回应这里的一些cmets:
1 - 它正在被移植到 python,因为管理层这么说,我会尽快让它不管 - 如果它没有坏,为什么要修复它?
2 - 非平凡对象的高级列表用法,我的意思是:许多不同的方式来排序和比较对象,而不是通过一个 cmp 方法。我想对列表进行拼接、排序、合并、搜索、插入、擦除和组合。我想要列表迭代器的列表,我想避免复制。
3 - 我现在知道内置列表实际上是数组,我应该寻找不同的 python 类。我想这是我困惑的根源。
4 - 当然,我正在学习以 Python 方式做事,但我也有截止日期。我正在移植的 STL 代码工作正常,我想尽可能少地更改它,因为这会引入错误。
感谢大家的意见,我真的很感激。
【问题讨论】:
-
如果您绝对需要完全优化的代码,那么为什么要将它从 C++ 移植到 Python? Python 比 C++ 慢得多。您不能期望获得类似的性能。
-
大写字母不会让你的想法更有说服力。
-
请不要全部大写。你有粗体和斜体——它们更适合强调。
-
试图在 Python 中重现 C++ 习语只会让你成为一个糟糕的 Python 程序员。阅读下面 Idan K 的回答,他是对的。
-
我没有得到反对票,赞成票。这是一个有效的问题,如果我们都知道如何处理我们不会提出问题的所有问题。