我对使用列表理解随机删除元素有一个问题。每个单独的元素都应该根据概率随机删除。这意味着,如果概率是0.2,那么仍然存在的元素的平均数量是80%。代码应该返回所有剩余的元素。
病毒是元素,mortabilityProb是概率或随机性因子。
def kill(viruses, mortalityProb):
return "".join(["".join(random.sample(viruses, int(len(viruses[i])*(1-mortalityProb)))) for i in range(len(viruses))])我正在努力更好地理解我做错了什么。要求是,这应该通过列表理解来完成。
提前感谢你帮了我一把!
发布于 2020-10-14 05:05:20
如何使用列表理解来“移除”元素(从技术上讲,您可以创建一个没有元素的新列表):
# general
[item for item in iterable if condition]
# example to get only the lowercase letters
[char for char in "aBcDeFhGi" if str.islower(char)]
# example filtering out based on probability
# random.random() returns a pseudo-random number between 0 and 1
import random
[item for item in iterable if random.random() > 0.8]我假设你需要这样的东西:
def kill(viruses, mortalityProb):
return [virus for virus in viruses if random.random() > mortalityProb]https://stackoverflow.com/questions/64343074
复制相似问题