簡體   English   中英

從列表中選擇隨機數,然后將其刪除?

[英]Choosing random number from list, and then removing it?

假設我有一個包含一系列數字的單獨文本文件:

1
2
3

等等。 Python程序是否可以隨機選擇該文本文件中的一個數字,然后從文本文件中刪除該數字? 我知道有可能做到第一部分,但我正在努力與第二部分。

如果它有幫助,列表大約是180000個數字。 我很陌生。 我們的想法是隨機為玩家分配一個號碼,然后從列表中刪除該號碼,以便其他玩家無法獲得該號碼。

你真的有180,000名球員嗎? 如果沒有,反過來如何解決問題:

  • 創建一個列出已使用ID的文件
  • 對於每個新用戶:
    1. 創建一個相當大的隨機ID(就像當前文件中的那個)
    2. 運行文件中的“已使用”ID並檢查新ID是否與現有ID不沖突 - 如果是,則生成新ID,直到沒有沖突
    3. 將新ID附加到您的文件

這比每次讀取,檢查和寫入大文件要快得多。 如果您的ID很大,則不會發生很多沖突。

您還可以優化流程,例如使用由今天的日期和隨機數組成的兩部分ID。 然后,您將保留每天的文件,並且只需要檢查與今天發布的ID的沖突。

我要說的是,你讀完整個文本文件,做你想做的任何改動,然后重寫文件的原始內容,這是我知道的最好方法

如果文件很小,請將整個內容讀入列表,從列表中刪除一個值,然后將新列表寫入臨時文件。 最后,將臨時文件重命名為原始文件名。

如果文件很大,請一次讀取一行文件,將值(一個除外)寫入臨時文件。 然后將臨時文件重命名為原始文件名。

就像dstromberg所說 ,如果文件很小,請查看文件IO上文檔以及這個答案將列表寫入文件的策略。 請注意, writelines() “不添加行分隔符”。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM