在python中统一处理元组和字符串

时间:2015-10-29 08:34:32

标签: python string tuples

这是一个关于python的美学问题。它的基础是元组和字符串的不同行为,就像我想添加一个条目一样:

字符串:

new_string = char + old_string

元组:

new_tuple = tuple([entry]) + old_tuple

我可以char替换str(char)str([char])取代tuple([entry])tuple(entry)取代n

当我想统一处理元组和字符串时,这就成了一个问题,这似乎是一个好主意,因为抽象地它们基本上是相同的东西(只是不是上面所见的实现)。

具体地说,假设我想要枚举长度为letters的所有单词,其中包含来自单词def words(n, letters): if n == 0: return [ '' ] else: return [ c + x for x in words(n - 1, letters) for c in letters ] 的条目。一个非常具有描述性的方式是:

字符串:

def words(n, letters):
    if n == 0:
        return [ tuple() ]
    else:
        return [ tuple([c]) + x for x in words(n - 1, letters) for c in letters ]

元组:

def words(n, letters):
    word_type = type(letters)
    if n == 0:
        return [ word_type() ]
    else:
        return [ letters[i:i+1] + x for x in words(n - 1, letters) for i in xrange(len(letters)) ]

我想出的最好的方法就是:

{{1}}

这是较少描述性的。

有更优雅的方式吗?

0 个答案:

没有答案