首页 > 解决方案 > 从包含python中字符串和数字的列表中获取最小值和最大值,然后用这些值替换字符串?

问题描述

如问题中所述,我有一个这样的列表:

l = ['a', 'a', 'a', 200.0, 1.0, -55.4, 6.5, 'b', 'b', 'b']

我想从该列表中获取minimummaximum值,以便将字符串 '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(作为最后一个元素)来实现这个目标) 到另一个变量。

由于我的列表包含的元素比我作为示例编写的要多得多,我想知道是否有更有效的方法来做到这一点。

非常感谢 :)

标签: pythonlistloopsiteration

解决方案


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]

推荐阅读