怪人/书呆子/Python同伙借我你的耳朵!你知道吗
我在Python2.7中编写了一个使用set()函数的脚本。这是一个只存储唯一值的内置数据结构。但是,我在另一个环境中运行脚本。我知道我应该在与生产环境相同的环境中进行编码。因此,在生产环境中有一个古老的python运行版本。据我所知,这是python2.2。另外,这个Python解释器运行在一个Java虚拟机(JVM)上,这使得这个Jython成为一个虚拟机。很酷。:)无论如何,无论出于什么原因,set()数据结构都不包含在此版本的Python中。我是否可以使用列表创建自己的集合,然后只查找唯一的值?这种类型的算法编写目前在我的脑海中。有人能给我指出一个有用的方向吗?你知道吗
运行这段代码时,我看到的版本是python2.2。你知道吗
import sys
print sys.version_info
此代码返回:(2, 2, 1, 'final', 0)
我抛出错误的代码是:
machine_set = set() #create a set, an empty set at that
我收到的错误如下:
<me@linuxbox ~>$ java -cp $WEBLOGIC weblogic.WLST lolcats.py
Initializing WebLogic Scripting Tool (WLST) ...
Welcome to WebLogic Server Administration Scripting Shell
Type help() for help on available commands
Problem invoking WLST - Traceback (innermost last):
File "/home/oracle/lolcats.py", line 18, in ?
TypeError: set() takes at least 2 arguments (0 given)
首先,你可能不会被Jython2.2困住。看起来2.2.1是您的WLST附带的,但是Google建议you may be able to use WLST with Jython 2.7。如果你能使用2.7,那可能是一个比2.2更好的环境。(按照非Jython标准,它仍然相当过时,但它胜过了2.2。)
如果这不可行,仍然不要使用列表。当} 模块实际上是作为dicts的包装器实现的,如果您使用的是2.3,我建议使用
set
不存在时,处理集合的方法是使用dict
忽略的值。与set
相同的时间复杂度,不同于您尝试将list
用于作业时得到的复杂度。内置set
类型之前的旧^{sets.Set
,但您使用的是2.2。你知道吗我建议你用听写器的按键。只需将值设置为轻量级的值,比如
1
。你知道吗python2.3-2.7有一个^{} 模块(在2.6+中不推荐使用这个模块,因为新的内置程序
set
和frozenset
做了同样的事情,但是做得更好)。你知道吗在2.2中没有,但是该模块是用纯Python实现的。所以假设你尊重Python license-你可以把copy it from the 2.3 source加入你的项目。事实上,我在一个古老的项目中有一些代码是这样开始的:
…这意味着只要将2.3的
sets.py
作为sets23.py
复制到项目中就可以了。但是我没有一个2.2测试,所以…我不会保证它在没有任何移植的情况下工作,但是我认为它可以。你知道吗或者,} ,它是Greg Wilson原始实现的一个小分支,
sets
文档中提到的那些2.3以前的历史set类仍然可以在ActiveState recipes collection中使用。并不是所有的东西都是migrated to the GitHub repo(或者,如果有的话,新的搜索是不完整的),但是我可以看到^{sets
也是一个分支。你知道吗相关问题 更多 >
编程相关推荐