我完成了一个练习,在其中我找到并返回两个字符串之间的常用单词,按字母顺序排列为字符串,用逗号分隔。虽然我能够正确地做到这一点,但我想知道是否有更好的方法。可以定义更好,但是你定义它。
def return_common(first, second):
first = first.split(',')
second = second.split(',')
newList = ",".join(list(set(first) & set(second)))
#newList = list(newList)
newList = newList.split(',')
newList = sorted(newList)
newList = ",".join(newList)
return newList
return_common("one,two,three", "four,five,one,two,six,three")
#above returns 'one,three,two'
答案 0 :(得分:2)
代码可以像这样缩短(成一行) -
def return_common(first, second):
return ",".join(sorted(set(first.split(","))&set(second.split(","))))
测试 -
>>> return_common("one,two,three", "four,five,one,two,six,three")
'one,three,two'
答案 1 :(得分:1)
基本方法很好但你做的工作太多了。重复连接和拆分,并将事物转换为不需要的列表。你需要对结果进行排序吗?
你可以做到
def return_common(first, second):
common_words = set(first.split(",")) & set(second.split(","))
return ",".join(common_words)
答案 2 :(得分:1)
我试图扩展你的问题。这是我的答案。
def return_common(*data):
common_words = reduce(lambda a,b:a&b, map(lambda x: set(x.split(",")), data))
return ",".join(common_words)
示例:
>>> return_common("two,three", "four,five,one,two,six,three", "three"):
'three'