【问题标题】:Get minimum and maximum values from a list containing both strings and numbers in python and then replace the strings with these values?从包含python中字符串和数字的列表中获取最小值和最大值,然后用这些值替换字符串?
【发布时间】:2021-07-28 01:22:24
【问题描述】:

正如问题中提到的,我有一个这样的列表:

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 元素list) 到一个变量,max (作为最后一个元素) 到另一个变量。

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

非常感谢:)

【问题讨论】:

  • what 更高效,究竟是什么?由于您尚未发布您的实现,我们几乎无法知道您使用的算法的效率如何。请提供预期见MRE - Minimal, Reproducible Example
  • 这与算法无关,在我看来,我描述的方法似乎有点复杂,而且不是很“pythonic”

标签: python list loops iteration


【解决方案1】:
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]

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-06-29
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多