Как бы кто-то взял случайное слово из списка многих? Words.txt - это текстовый файл с каждым словом в английском словаре, разделенный новой строкой.Выбор случайного слова из многих
ответ
Вы можете эффективно взять случайную строку из файла, используя heapq
, давая ему случайный ключ, например:
import random, heapq
with open('Words.txt') as fin:
word, = heapq.nlargest(1, fin, key=lambda L: random.random())
Причина мы используем heapq.nlargest
(мы могли бы использовать heapq.nsmallest
- это довольно произвольно) здесь что он эффективнее с точки зрения памяти - нам остается только одна строка в памяти сразу. Он либо остается одной и той же линией, либо заменяется линией с более высоким случайным значением на каждой итерации входа. Это противоположность:
from random import choice
with open('Words.txt') as fin:
words = list.readlines()
word = choice(lines)
Итак, в этом случае мы загружаем все слова в память. Затем мы выбираем случайное слово из списка. Если вы будете продолжать выбирать слова и умеете иметь все слова в памяти, тогда это лучший подход, так как выбор чего-то случайного, который в памяти будет намного более эффективным, чтобы линейно сканировать файл каждый раз.
Короче говоря, если вы знаете, что хотите получить только одно случайное слово (скажем, ваша программа просто хочет его при запуске), используйте первый подход и избегайте накладных расходов памяти, если вы хотите многократно получать больше слов, памяти и использовать второй подход.
Конечно, если вы знаете, что вам когда-нибудь понадобится 100 (выберите здесь) случайные слова, затем настройте параметры на heapq.nlargest
и уничтожьте их из итерируемого, тогда, если вы закончите, решите, что делать дальше ,
import random, heapq
with open('Words.txt') as fin:
words = heapq.nlargest(100, fin, key=lambda L: random.random())
word_iter = iter(words)
Затем, позже в сценарии, использовать что-то вроде:
try:
word = next(word_iter)
except StopIteration:
# we've exhausted all our pre-loaded random words...
# either get more, fail, whatever...
Если бы нисходящий не возражал бы комментировать, как этот ответ может быть улучшен/если они найдут что-то не так с ним - это «Оцените. –
- 1. Выбор случайного слова в Python?
- 2. выбор случайного слова из массива слов
- 3. Выбор случайного слова из 2d массива слов
- 4. Ввод списка слов из файла, а затем выбор случайного слова?
- 5. Выбор случайного кортежа из словаря
- 6. Выбор случайного изображения из ресурсов
- 7. Выбор случайного письма из-з
- 8. Выбор случайного элемента из набора
- 9. Выбор случайного из массива ascctive
- 10. Выбор случайного шрифта из UIFont
- 11. Выбор случайного цвета из массива
- 12. Выбор случайного ключа из хэша
- 13. Выбор случайного элемента из объекта
- 14. Выбор случайного элемента из массива
- 15. Случайного слова давать письмо
- 16. Выбор ONE радио из многих
- 17. Выбор из многих ко многим
- 18. Выбор случайного слова с критерием длины. Как разложить?
- 19. Youtube V3 API - выбор случайного видео на основе ключевого слова
- 20. Выбор случайного элемента коллекции
- 21. Выбор случайного режима списка
- 22. Извлечение случайного слова из строкового массива
- 23. Создание случайного слова из букв и цифр
- 24. Выбор случайного изображения
- 25. Выбор случайного звука Pygame
- 26. Выбор случайного объекта json
- 27. Выбор случайного наименьшего взвешенного
- 28. Python: выбор случайного числа
- 29. Выбор случайного элемента из помеченной библиотеки
- 30. Выбор случайного цвета из списка массивов
возможного дубликата [? Комплектование случайное слово В Python] (http://stackoverflow.com/questions/4394145/ pick-a-random-word-in-python) –
Не уверен, что это подходящая цель для обмана - она показывает, как использовать 'random.choice' для последовательности, а не для файла или итерации. –
«Как бы кто-то взял случайное слово из списка многих», как и любой из них: D –