python – 需要对给定的字符串进行排序(首先以x开头的字符串)
发布时间:2020-12-20 12:02:29 所属栏目:Python 来源:网络整理
导读:当给出[‘mix’,’xyz’,’apple’,’xanadu’,’aardvark’]列表时,代码不返回最后一个单词. def front_x(words): x_list = [] no_x_list = [] [x_list.append(i) for i in words if i[0] == "x"] [no_x_list.append(words[i2]) for i2 in range(len(words)
当给出[‘mix’,’xyz’,’apple’,’xanadu’,’aardvark’]列表时,代码不返回最后一个单词.
def front_x(words): x_list = [] no_x_list = [] [x_list.append(i) for i in words if i[0] == "x"] [no_x_list.append(words[i2]) for i2 in range(len(words)-1) if words[i2] not in x_list] x_list.sort() no_x_list.sort() return x_list + no_x_list print front_x(['mix','xyz','apple','xanadu','aardvark']) 一定是: ['xanadu','aardvark','mix'] 列表[‘bbb’,’ccc’,’axx’,’xzz’,’xaa’]和[‘ccc’,’bbb’,’aaa’,’xcc’,’xaa’]一切都正确[‘ xaa’,’ccc’]和[‘xaa’,’ccc’] 解决方法
迭代范围(len(单词)-1)看起来不正确.更重要的是,使列表理解列表附加是非常单一的; list comps用于构建列表,而不是使列表附加,这在这里具有讽刺意味.
您可以通过基于两元组进行排序来执行排序一次,该元组的第一项检查单词是否以’x’开头并将其放在前面.元组中的第二项在列表中应用了lexicograhical排序,打破了联系: def front_x(words): return sorted(words,key=lambda y: (not y.startswith('x'),y)) print front_x(['mix','aardvark']) # ['xanadu','mix'] (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |