Если у меня есть функция, которая может работать как с наборами, так и со списками и должна возвращать измененную форму последовательности, есть ли способ сохранить тип последовательности, но при этом использовать понимание?Например, в следующем случае, если я вызываю 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.
PS Я использую Python 3.2.2