这是一个关于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}}
这是较少描述性的。
有更优雅的方式吗?