编写一个带有字符串列表的函数,并以排序的顺序返回一个包含字符串的列表,除了它首先将所有以'x'开头的字符串分组。
例如, ['mix','xyz','apple','xanadu','aardvark']产量 ['xanadu','xyz','aardvark','apple','mix']
我认为这可以通过制作两个列表并在组合之前对每个列表进行排序来完成,但我什么都没得到。
任何想法都会有所帮助
答案 0 :(得分:4)
拆分列表是个好主意,您可以使用list comprehensions执行此操作:
xs = [s for s in l if s[0] == "x"] # or 'if s.startswith("x")'
no_xs = [s for s in l if s[0] != "x"] # or 'if not s.startswith("x")'
然后,您可以将sorted()
应用于每个列表并将它们重新添加到一起:
sorted(xs) + sorted(no_xs)
答案 1 :(得分:3)
将sorted()
bif与自定义键一起使用。
KEY = 'X0123456789ABCDEFGHIJKLMNOPQRSTUVWYZ'
sorted(my_list, key=KEY.index)