我正在努力解决一个看起来如此基本的问题,但却让我发疯,因为我仍然无法实现。
交易如下: 例如,我有一个包含 5 个元素的列表:
['A', 'B', 'C', 'D', 'E']
我想要列表中的元素,以便每个列表在不同索引处包含相同的元素。例如,元素“A”在每个列表中将具有不同的索引位置。它应该是随机的,以便每次运行代码时,我仍然有不同的列表。
像这样:
['A', 'B', 'C', 'D', 'E']
['C', 'D', 'E', 'A', 'B']
['B', 'C', 'D', 'E', 'A']
['E', 'A', 'B', 'C', 'D']
['D', 'E', 'A', 'B', 'C']
我尝试使用itertools,我尝试使用if语句进入for循环进入for循环,但显然它不起作用......我觉得解决方案很简单,但我错过了一些东西。
import random
original_list = ['A', 'B', 'C', 'D', 'E']
# Number of lists you want to generate:
num_lists = 5
# Generate and print the shuffled lists:
for i in range(num_lists):
shuffled_list = original_list.copy()
random.shuffle(shuffled_list)
print(shuffled_list)
您可以根据您想要的列表数量更改代码。
您可以使用
collections.deque
为此:
from collections import deque
d = deque('ABCDE')
for _ in range(len(d)):
print(d)
d.rotate()
deque(['A', 'B', 'C', 'D', 'E'])
deque(['E', 'A', 'B', 'C', 'D'])
deque(['D', 'E', 'A', 'B', 'C'])
deque(['C', 'D', 'E', 'A', 'B'])
deque(['B', 'C', 'D', 'E', 'A'])
要随机化,您需要打乱最终结果:
import random
lists = []
for _ in range(len(d)):
lists.append(list(d))
d.rotate()
random.shuffle(lists)