繁体   English   中英

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

[英]Get minimum and maximum values from a list containing both strings and numbers in python and then replace the strings with these values?

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

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

我想从该列表中获取minimummaximum ,以便将字符串 'a' 替换为minimum和 'b' 替换为maximum 我的 output 必须是这样的:

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]

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM