gpt4 book ai didi

python - 如何在Python中用约束打乱列表,其中某些元素不能出现在另一个元素之后

转载 作者:行者123 更新时间:2023-12-01 04:31:29 26 4
gpt4 key购买 nike

我读过一些关于条件洗牌/随机化的帖子,但找不到任何可以完全回答我的问题的内容。

我有两个包含字符串的列表:

fruit = ['apple', 'pear', 'banana', 'orange'...]
labels = ['A', 'B', 'B', 'D'...]

每个列表可能包含重复项。

我想做的是随机排列一个组合水果和标签的列表,其中新列表中任何一个标签的位置可能出现在相应水果之前的任何位置,但不能出现在相应水果之后,这样我就得到了这样的结果:

fruit_and_labels = ['D', 'orange', 'B', 'B', 'banana', 'A', 'pear', 'apple'...]

我尝试了多种方法,但无法找到一种解决方案,使该条件对于结果列表中的所有水果始终成立。

我是Python新手,所以如果这个措辞或问题经过深思熟虑,我深表歉意 - 张开双臂欢迎所有反馈!谢谢

最佳答案

根据示例输出判断,我假设您的意思是在水果之后不应出现标签。如果是这样的话:

import random

fruit = ['apple', 'pear', 'banana', 'orange']
labels = ['A', 'B', 'B', 'D']

# shuffle fruits
result = list(fruit)
random.shuffle(result)

# insert labels at random positions
# between the beginning of the list and the corresponding fruit
for l,f in zip(labels,fruit):
result.insert(random.randint(0,result.index(f)),l)

print result

输出:

['D', 'B', 'banana', 'orange', 'B', 'A', 'apple', 'pear']

关于python - 如何在Python中用约束打乱列表,其中某些元素不能出现在另一个元素之后,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32350867/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com