Python替换列表中的数字

pic*_*olo 2 python random list-comprehension list

嗨我有一个数字列表,其中有一些'无',我想用列表中不是'无'的其他数字替换.

例如,对于以下列表:

listP = [ 2.5,  3,  4, None, 4, 8.5, None, 7.3]
Run Code Online (Sandbox Code Playgroud)

我希望这两个None项目被列表中的随机数替换,而这些数字本身并不是一个None.所以在这个例子中,None可以用2.5或3或4或8.5或7.3代替.

无论如何在一行代码中执行此操作?

Mar*_*ers 5

你需要使用两个步骤; 提取非None值以random.choice()供选择,然后使用列表推导来实际选择随机值:

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]    
Run Code Online (Sandbox Code Playgroud)