从列表中选择随机数,然后将其删除?

时间:2013-12-03 05:50:59

标签: python

假设我有一个单独的文本文件,其中包含一系列数字:

1
2
3

等等。 Python程序是否可以随机选择该文本文件中的一个数字,然后从文本文件中删除该数字?我知道有可能做到第一部分,但我正在努力与第二部分。

如果有帮助,列表大约是180000个数字。我很陌生。我们的想法是随机为玩家分配一个号码,然后从列表中删除该号码,以便其他玩家无法获得该号码。

4 个答案:

答案 0 :(得分:2)

你真的有180,000名球员吗?如果没有,反过来如何解决问题:

  • 创建一个列出已使用ID的文件
  • 对于每个新用户:
    1. 创建一个相当大的随机ID(如当前文件中的那个)
    2. 浏览使用过的'您文件中的ID并检查您的新ID是否与现有ID发生冲突 - 如果是,则在没有冲突之前生成新ID
    3. 将新ID附加到您的文件

这比每次读取,检查和写入大文件要快得多。如果您的ID很大,则不会发生多次碰撞。

您还可以优化流程,例如使用由今天的日期和随机数组成的两部分ID。然后,您将保留每天的文件,并且只需要检查与今天发布的ID的冲突。

答案 1 :(得分:1)

我要说的是,你读完整个文本文件,对它做任何想做的改动,然后重写文件的原始内容,这是我知道的最好方法< / p>

答案 2 :(得分:1)

如果文件很小,请将整个内容读入列表,从列表中删除一个值,然后将新列表写入临时文件。最后,将临时文件重命名为原始文件名。

如果文件很大,请一次读取一行文件,将值(一个除外)写入临时文件。然后将临时文件重命名为原始文件名。

答案 3 :(得分:0)

dstromberg said类似,如果文件较小,请查看documentation on file IOthis answer的策略,将列表写入文件。请注意,writelines()“不会添加行分隔符。”