首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >使用列表理解从列表中随机删除元素

使用列表理解从列表中随机删除元素
EN

Stack Overflow用户
提问于 2020-10-14 04:58:43
回答 1查看 42关注 0票数 0

我对使用列表理解随机删除元素有一个问题。每个单独的元素都应该根据概率随机删除。这意味着,如果概率是0.2,那么仍然存在的元素的平均数量是80%。代码应该返回所有剩余的元素。

病毒是元素,mortabilityProb是概率或随机性因子。

代码语言:javascript
复制
def kill(viruses, mortalityProb):
    return "".join(["".join(random.sample(viruses, int(len(viruses[i])*(1-mortalityProb)))) for i in range(len(viruses))])

我正在努力更好地理解我做错了什么。要求是,这应该通过列表理解来完成。

提前感谢你帮了我一把!

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2020-10-14 05:05:20

如何使用列表理解来“移除”元素(从技术上讲,您可以创建一个没有元素的新列表):

代码语言:javascript
复制
# 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]

我假设你需要这样的东西:

代码语言:javascript
复制
def kill(viruses, mortalityProb):
    return [virus for virus in viruses if random.random() > mortalityProb]
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/64343074

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档