python - python中除零外的列表排序
问题描述
我有一个列表[5,3,0,0,4,1,4,0,7]
,我想以某种方式对列表进行排序,使零保留在它们的位置,而对其他的进行排序答案是这样的[1,3,0,0,4,4,5,0,7]
我写了这段代码,但我无法在他们的位置修复零
def except_zero(items: list) -> Iterable:
ans=[]
for i in range(len(items)):
if (items[i] != 0):
ans.append(items[i])
ans = sorted(ans)
j = 0
for i in range(len(items)):
if (items[i] >= 0):
items[i] = ans[j]
j += 1
return ans
解决方案
你可以试试这个:
def sort_and_extract_non_zero_items(items: list) -> Iterable:
return sorted([n for n in l if n != 0])
def replace_non_zero_items(original: list, non_zeroes: list) -> Iterable:
return [non_zeroes.pop(0) if n != 0 else 0 for n in original]
non_zero_list = sort_and_extract_non_zero_items(items)
items = replace_non_zero_items(items, non_zero_list)
推荐阅读
- node.js - 脚手架功能在某些节点包中如何工作?
- javascript - 我们可以过滤存储在 JSON 中的数据吗?
- reactjs - 如何从流协议获取媒体文件的持续时间
- responsive-design - 响应式网页 - 背景图像和文本缩放
- c# - 有人可以解决 Visual Studio Code 给我的这个问题吗?
- docusignapi - RecipientViewRequest - 未在 docusign 门户中显示注册按钮 - JWT Grant
- c# - 使用 Jetbrain Rider 时如何在 Xamarin 中添加图像?
- java - Apache Beam 数据流:从 Azure 到 GCS 的文件传输
- google-chrome - 当 SVG 位于带有 translate3d 的元素上时,SVG 过滤器被切断
- css - React Native Style 内容之间的空格