微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

如果元素中包含元组,则从列表中删除元组

如何解决如果元素中包含元组,则从列表中删除元组

我有一个球员名单和一个元组名单

    result = result.Where(x => x.CreationTime > latestMessageDateTime );

有两对和一个元组。 我希望每个玩家都从候选列表中选择一个元组,但是如果他们在候选列表中,那么他们就不能选择他们所在的元组

我当前的尝试:

players = ['a','b','c','d','e','f','g','h']
shortlist = [('a','b'),('c','d'),('e',)]

但是我只是在数据框中得到空值。我认为一定有一种使用列表理解的方法,但是我不太清楚。预先感谢

解决方法

在遍历列表时(例如使用remove),您不想修改列表。

也许您正在寻找类似的东西?

import random
choices = []
for person in players:
    eligible_items = [item for item in shortlist if person not in item]
    their_choice = random.choices(eligible_items)[0]
    choices.append(their_choice)

还是一个大列表理解?

[
    random.choices([item for item in shortlist if person not in item])[0]
    for person in players
]
,

可以在列表理解中完成第二个循环的代码修改,所以这样的事情应该起作用:

for person in players:
    df[person] = random.choices(shortlist,[person not in choice for choice in shortlist])

这里发生的是我们在选择的第二个参数中为每个选择分配权重。使用列表推导为每个人计算权重,对于包含该人的选择,权重为False,对于其他人,权重为True。幸运的是,random.choices()接受True False列表,因为权重或需要转换为0和1。

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。