我有一个字符串和整数列表,想要对列表进行排序,像这样保留数字
["Hello", 1, 2, "World", 6, "Foo", 3]
会成为
["Foo", 1, 2, "Hello", 6, "World", 3]
简而言之,它仅对列表中的字符串排序,而不对保留在原位的整数排序。我尝试将key
参数与一起使用,list.sort()
但未能实现我想要的。
谁能帮我这个?
编辑:这不同于链接的问题,因为我想保留整数的索引,而不是将它们与字符串一起排序。
编辑:这与第二个链接的问题不同,因为该问题的答案可以使用key
参数解决问题,我明确声明的内容在这种情况下不起作用。
前几天,从@JonClements获得了这个很酷的技巧。
开始:
gen = iter(sorted([x for x in lst if isinstance(x, str)]))
new_lst = [next(gen) if isinstance(x, str) else x for x in lst]
print(new_lst)
# ['Foo', 1, 2, 'Hello', 6, 'World', 3]
分别对字符串进行排序,然后从排序后的字符串创建生成器表达式。在列表理解中,从gen中交替选择对象。实验 如果只有原始位置中的项目是字符串,则使用三元条件,否则,从初始列表中选择一个项目(整数)。
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句