我想知道为什么我的字符串列表没有正确排序。我输入了一个4个单词的句子,然后它被排列了24次,然后我希望它对那些句子进行排序。除非我用
def my4sort(alist): #sorts the list of strings
return(sorted(alist, key=len))排列0:“bob是编程批次”,排序时给出“bob是编程批次” 排列1:“bob是很多编程”,排序后给出“bob就是很多编程”。 排列2:当排序给出“bob编程就是很多”时,“bob编程就是很多”。 排列3:“bob编程批次是”排序时给出的“bob编程批号是”。 排列4:当排序给出“bob地段就是编程”时,“bob地段就是编程”。 排列5:当排序给出“bob大量编程是”时,“bob地段编程是”。 排列6:“bob规划批次”排序时“是bob编程批号吗?” 排列7:“bob大量编程吗?”排序时给出“是bob大量编程”。 排列8:当排序给出“正在编程bob地段”时,“是在编程bob地段吗?” 排列9:“当排序给出”是编程很多鲍勃‘是编程很多鲍勃’。 排列10:“是很多bob编程”当排序时给出“是很多bob编程”。
这是我得到的输出,你可以看到这是不对的
这是我的置换码
def permutations(liststring): #permutes the list of strings
if not liststring:
return ['']
ret = []
for i, d in enumerate(liststring):
perms = permutations(liststring[:i] + liststring[i+1:])
for perm in perms:
ret.append(d + ' ' + perm)
return ret发布于 2014-03-18 22:45:59
如果要对字符串列表中的每个字符串进行排序,则需要根据每个字符串而不是字符串列表调用列表上的sorted。例如:
def shortStringsByWordLengths(sentences):
return [' '.join(sorted(sentence.split(), key=len)) for sentence in sentences]在这段代码中,我创建了一个新列表,该列表基于拆分、排序,然后重新加入每个单独的句子。split接受该字符串并将其转换为由空格分隔的单词列表(例如,'hello world!'变成['hello', 'world!'],sorted按长度对该列表进行排序,并将其与空格重新组合在一起。
根据您的评论,您希望它按照最长的第一个排序,在这种情况下,您需要将reverse=True添加到sorted中,使其看起来如下:
def shortStringsByWordLengths(sentences):
return [' '.join(sorted(sentence.split(), key=len, reverse=True)) for sentence in sentences]发布于 2014-03-18 22:43:07
看起来,您要做的是对所有排列字符串的列表进行排序。排序后,它们不是都是相同的长度吗,因为你只是在重新排列单词?如果您希望对每个字符串进行单独排序,则首先需要将其拆分成单独的单词进行比较。
sorted("bob lots programming is".split(), key=len)
['is', 'bob', 'lots', 'programming']发布于 2014-03-18 22:59:43
罗布瓦茨的解决方案转移到你的职能:
def my4sort(alist): #sorts the list of strings
return [" ".join(sorted(permutation.split(),key=len,reverse=True)) for permutation in alist]
alist=["this is sparta","sparta this is","is this sparta"]
print mysort4sort(alist)
# gives ['sparta this is', 'sparta this is', 'sparta this is']https://stackoverflow.com/questions/22492479
复制相似问题