python - 如何检查列表(或数组)上的条件,然后在 Python 中根据该条件对元素进行排序
问题描述
我有一个包含 n 个元素的复数列表,我想检查有多少元素是实数(虚部为零),然后以从实数开始的方式对我的列表进行排序。
例如下面的列表:
a = [ 7 + 0j, -2 + 3j, -2 - 3j, 5 + 6j, 5 - 6j, -1+ 0j, -8 + 4j, -8 - 4j]
两个元素是实数(第一个元素和第六个元素)我想知道我的列表中有 2 个实数元素,然后我想进行如下排序,以实数开头,其他元素保持不变:
b = [ 7 + 0j, -1+ 0j, -2 + 3j, -2 - 3j, 5 + 6j, 5 - 6j, -8 + 4j, -8 - 4j]
我怎样才能做到这一点?谢谢
解决方案
Python 有一个sorted
带key
参数的函数。
key 参数的值应该是一个函数,它接受一个参数并返回一个用于排序目的的键。
您可以根据检查是否存在非零虚部的 lambda 函数进行排序。
a = [ 7 + 0j, -2 + 3j, -2 - 3j, 5 + 6j, 5 - 6j, -1+ 0j, -8 + 4j, -8 - 4j]
sorted(a, key = lambda x: x.imag != 0)
#Output: [(7+0j), (-1+0j), (-2+3j), (-2-3j), (5+6j), (5-6j), (-8+4j), (-8-4j)]
推荐阅读
- javascript - 在 Cordova Android 中,来自 Canvas Signature 的 jsPDF addImage 在写入 PDF 文件时写入不正确
- javascript - 根据上一个下拉菜单中选择的选项设置文本字段的最小值和最大值
- powershell - 删除旧的/冗余的 activesync 伙伴关系
- node.js - 如何缓存 Express.js 中从磁盘读取的特定路由
- amazon-web-services - 我们可以在单个 serverless.yml 文件中使用 AWS 和 Google Cloud 资源的组合吗?
- account - 以后可以将Jfrog OSS账号转为企业版账号吗?
- git - 如何正确分叉本地 git 存储库?
- android - 在没有木星的情况下,我如何在 Junit5 中断言抛出
- c# - 循环遍历在特定时间范围内创建的文件并获取文件名
- javascript - 如何重写冗余方法声明并创建一个更短的方法?