Python 替换列表中的数字

标签 python list random list-comprehension

您好,我有一个数字列表,其中包含一些“无”,我想将其替换为列表中非“无”的其他数字。

例如,对于以下列表:

listP = [ 2.5,  3,  4, None, 4, 8.5, None, 7.3]

我希望将两个 None 项替换为列表中本身不是 None 的随机数。因此,在此示例中,None 可以替换为 2.5、3、4、8.5 或 7.3。

是否可以通过一行代码来完成此操作?

最佳答案

您需要使用两个步骤;提取 random.choice() 的非 None 值进行选择,然后使用列表理解来实际选择随机值:

import random

numbers = [n for n in listP if n is not None]
result = [n if n is not None else random.choice(numbers) for n in listP]    

关于Python 替换列表中的数字,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35794227/

相关文章:

c++ - 内存管理和 C++ 容器类

list - 仅转换 Scala 列表的第一个元素

r - Hausman 对 lme4 中的 "glmer"的规范测试

c++ - MTRand 在编译时产生错误

python - 在python中生成唯一的随机二进制数组

python - 使用 Python 解析 HTTP 请求授权 header

java - 如何使用 Arrays.asList() 对数组执行 List 函数

javascript - 甘特图在线

Python 测验问题

python - "python Requests library"的区域设置问题,如何指定具有特定区域设置的请求?