如何随机混合列表并将其分配给 .TXT 文件

How to randomly mix up a list and assign it to a .TXT file

我想生成一系列随机字母分配给一个列表并将其分配给一个新列表。为了进一步解释这个问题,我举个例子:

我有一个包含 5 个字母的列表:

letters = ["A", "B", "C", "D", "E"]

我想将这些字母随机混合到另一个列表中,并将其添加到 .TXT 文件中。这是我希望输出的示例:

["C", "A", "E", "D", "B"]

或:

["E", "D", "B", "C", "A"]

如您所见,我只希望所有字母随机放置,不重复。所以像这样:

["C", "C", "E", "B", "A"]

无法使用,因为“C”重复了 2 次。

我也想在Python

中这样做

谢谢 丹尼尔

您可以使用方法 random.choice() 为您提供随机字母值。如果你想将 25 个随机字母 lower-/uppercase 字母写入文件,我会这样做:

import random
import string
with open("filepath", "w+") as file:
    for _ in range(25):
        file.write(f"{random.choice(string.ascii_letters)}\n")

让 25 个字符在彼此下方。

编辑:我不太明白你所说的已经定义了一些字母是什么意思,但是如果你想在一个字母到一个新字母之间创建一个映射,我会建议使用字典。

我的方法是使用模块 random。 @Dharman 和@Martin J. Nilsen 的回答会起作用,但不适用于我想要的问题。我不希望在新生成的列表中出现重复,random.choices()/random.choice() 将始终有重复。

我解决这个问题的方法是使用 random.shuffle() 方法:

letters = ["A", "B", "C", "D", "E"]

import random

random.shuffle(letters)

print(letters)

>>> ['E', 'A', 'D', 'B', 'C']
>>> ['C', 'E', 'D', 'B', 'A']
>>> ['B', 'E', 'C', 'D', 'A']

如果我想将这些随机列表添加到文本文件中,只需将上面的脚本添加到方法中即可:

def ShuffleLetters():
    import random

    letters = ["A", "B", "C", "D", "E"]

    random.shuffle(letters)

    return letters

然后将它们添加到 for 循环中:

file = open("test.txt", "a")

i = 0

amount_of_shuffles = 10

for i in range(0, (amount_of_shuffles + 1)):
    file.write(str(ShuffleLetters()) + "\n")

file.close()