【发布时间】:2011-12-08 17:33:28
【问题描述】:
如果我有一个可以同时对集合和列表进行操作的函数并且应该返回序列的修改形式,有没有办法保留序列类型但仍然使用推导式?例如,在下面,如果我用集合调用stripcommonpathprefix,它可以工作,但具有将集合转换为列表的不良副作用。是否可以维护类型(同时仍然使用理解)而无需直接检查 isinstance 然后基于此返回正确的类型?如果不是,那么最干净的方法是什么?
def commonpathprefix(seq):
return os.path.commonprefix(seq).rpartition(os.path.sep)[0] + os.path.sep
def stripcommonpathprefix(seq):
prefix = commonpathprefix(seq)
prefixlen = len(prefix)
return prefix, [ p[prefixlen:] for p in seq ]
谢谢你,如果这是一个基本问题,我很抱歉。我刚开始学习python。
附注我正在使用 Python 3.2.2
【问题讨论】:
-
为什么需要这样做?我真的想不出任何好的理由......
标签: python list python-3.x set list-comprehension