python - 从包含python中字符串和数字的列表中获取最小值和最大值,然后用这些值替换字符串?
问题描述
如问题中所述,我有一个这样的列表:
l = ['a', 'a', 'a', 200.0, 1.0, -55.4, 6.5, 'b', 'b', 'b']
我想从该列表中获取minimum
和maximum
值,以便将字符串 'a' 替换为 , 将minimum
'b' 替换为maximum
. 我的输出必须是这样的:
l = [-55.4, -55.4, -55.4, 200.0, 1.0, -55.4, 6.5, 200.0, 200.0, 200.0]
我可以通过使用while
循环创建另一个列表来仅存储数值,然后对这个新列表进行排序并将minimum
值(作为0th
这个新列表的元素)传递给一个变量和max
(作为最后一个元素)来实现这个目标) 到另一个变量。
由于我的列表包含的元素比我作为示例编写的要多得多,我想知道是否有更有效的方法来做到这一点。
非常感谢 :)
解决方案
l = ["a", "a", "a", 200.0, 1.0, -55.4, 6.5, "b", "b", "b"]
mx = max((v for v in l if isinstance(v, float)))
mn = min((v for v in l if isinstance(v, float)))
out = [{"a": mn, "b": mx}.get(v, v) for v in l]
print(out)
印刷:
[-55.4, -55.4, -55.4, 200.0, 1.0, -55.4, 6.5, 200.0, 200.0, 200.0]
推荐阅读
- c - 使用 fork 转换为大写的 C 程序
- java - 以编程方式将引号添加到 EditText
- php - 如何在laravel 5.5中使用php的flock()函数
- python - 我想在产品有折扣价时显示折扣价
- python - 使用 QAbstractTableModel 在 pyqts QTableView 中插入和删除行
- python - 使用窗口和层次逻辑使用 Pandas 创建计算列
- azure - Azure ADDS 的域控制器策略
- algorithm - 如何找到具有 k 个负加权边的最短路径?
- c# - 记录 ASP.net 核心 Lambda 应用程序日志
- windows - Using git submodules as junctions in Windows