python - 使用列表推导从列表中随机删除一个元素
问题描述
我在使用列表理解随机删除元素时遇到问题。应根据概率随机删除每个单独的元素。所以这意味着,如果概率为 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))])
我试图更好地理解我做错了什么。要求是这应该通过列表理解来完成。
预先感谢您帮助我!
解决方案
如何使用列表推导来“删除”元素(从技术上讲,您创建一个没有元素的新列表):
# 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]
推荐阅读
- python - 使用 BeautifulSoup 从 Tom Holland 的 IMDB 页面中提取角色角色
- html - Bootstrap 导航栏附加项目而不是切换它们
- typescript - 在 Mac 上用于 Word 的旁加载 Typescript/React Office 加载项
- typescript - 如何为多个包创建通用声明文件?
- printing - 在 blazor webassembly 中没有任何对话框或提示的情况下,我有哪些打印选项
- javascript - 类型错误:无法读取未定义的属性“包含”
- python - 当我的播放器类与我的平台类之一发生冲突时,如何制作和结束屏幕?
- excel - 将 Worksheet_Change 限制为指定的单元格范围
- database - 地址表中的城市和邮编是否违反 BCNF
- wordpress - 如何在备份中查找帖子和页面