如何解决如果元素中包含元组,则从列表中删除元组
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 举报,一经查实,本站将立刻删除。