我正在尝试对一个列表进行洗牌,其中一些元素每两个元素重复一次
我有一个包含重复元素的列表,如下所示:
mylist=[A,A,A,B,C,D,E,F]
我想随机洗牌列表,但要确保所有重复的元素都是彼此分开的两个元素,如下面的一个
mylist=[A,B,C,A,D,E,A,F]
到目前为止,我只找到了下面的代码来检查两个元素是一个接一个地重复还是分开一个元素,但我不知道如何确保它们正好分开两个元素
for i in range(len(mylist)):
if mylist[i] == mylist[i+1] or mylist[i] == mylist[i+2]:
mylist.append(mylist.pop(i))
您可以自己实现shuffle函数,并将项目作为组放置在结果列表中。每个项目的位置应在剩余位置内相隔2步。请注意,这可能会导致没有空间放置一组项目的情况,因此您需要循环,直到找到有效的洗牌。从最大到最小的分组处理应该比仅仅检查随机洗牌要快得多
输出:
相关问题 更多 >
编程相关推荐