Найти - Пользователи
Полная версия: Как узнать индекс случайно выбранного элемента последовательности?
Начало » Центр помощи » Как узнать индекс случайно выбранного элемента последовательности?
1 2 3
TohaTony
JOHN_16
TohaTonyеще раз внимательно смотртим на пост товарища doza_and
Да, на счет этого надо было быть мне внимательней. Но это бы не решило вторую часть моей проблемы.
Я ж написал, что “считать нужно элементы”. Вручную их забивать - не вариант.
Я никак не мог сделать так, чтобы автоматически получать количество элементов последовательности кортежа, и чтобы автоматизировать весь процесс. Скажем, если кортеж будет не константой и я буду сцеплять его с другими кортежами.
Может есть более легкий путь, но пока что делаю исходя из своих скудных знаний. Получается так.
JOHN_16
я не понимаю вас, что значит считать элементы, если вы про количество проходов по циклу - то ничего не надо:
import random
>>> 
>>> WORDS = ("питон", "мышь", "кислород", "карандаш", "ответ", "стакан")
>>> iword = random.randint(0, len(WORDS))
>>> word = WORDS[iword]
>>> word
'стакан'
TohaTony
JOHN_16
я не понимаю вас, что значит считать элементы, если вы про количество проходов по циклу - то ничего не надо:
Нет - нет, дело не в итерации.
Я подумал, что границы самому вбивать надо будет, предварительно посчитав их в кортеже.
Но теперь, с появлением len(WORDS) все встало на свои места. Не сообразил.
Вот это я круг сделал
Ну, ниче, пойдет на пользу. Теперь я знаю про запятую после i и что она делает.
Спасибо!

И всем спасибо еще раз!

sander
TohaTony
ты не знаешь про len, но собирался
TohaTony
открывать код функции random.choice() и дорабатывать для своих нужд.
WTF???
FishHook
TohaTony
Теперь я знаю про запятую после i и что она делает.
И что же она делает по вашему?
TohaTony
sander
TohaTonyты не знаешь про len, но собирался
Про len знал. Я только стал переходить от теории к практики. Вот и вылетело как-то. Это раздел помощи новичкам или повыпендриваюсь перед новичками?
TohaTony
FishHook
(0, 1, 2, 3, 4)
В моем случае это привело к этому.
А вообще это переменная-счетчик
FishHook
TohaTony
Я сейчас синий как изолента, потому что в отпуск меня отпустили
а так бы я тебя за тупость забанил
очень мне этого хочется

неси, мужик, мудрость свою в массы
дескать можно, то есть жги дальше
TohaTony
FishHook
TohaTonyЯ сейчас синий как изолента, потому что в отпуск меня отпустилиа так бы я тебя за тупость забанилочень мне этого хочетсянеси, мужик, мудрость свою в массыдескать можно, то есть жги дальше
Синяк, ждал ответа весь день, чтобы изложить свою бухую “мысль”.
py.user.next
TohaTony
По поводу “Можно и так, но повторные проходы не рекомендуются.” - можно подробней?
Если ты один раз что-то нашёл, то искать повторно то же самое не рекомендуется. Поэтому нужно либо сразу задать пары (индекс значение), либо получить их при единственном поиске. Если сразу задать пары, то потом может понадобиться отдельно выводить слова и придётся отделять индексы. Поэтому выбирается второй вариант - перечислить их только при поиске.

Операция .index() для однажды найденного слова снова выполняет поиск этого слова, чтобы получить его индекс. Это два одинаковых поиска.

А randint() требует вычисления длины - операция по времени такая же, как и поиск. А у некоторых последовательностей вообще длина не вычисляется.

Пример:
doza_and
Конечно можно по другому.
>>> import random
>>> 
>>> WORDS = (i for i in ("питон", "мышь", "кислород", "карандаш", "ответ", "стакан"))
>>> iword = random.randint(0,5)
>>> word = WORDS[iword]
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
TypeError: 'generator' object is not subscriptable
>>>

А вот enumerate() здесь будет работать, потому что ему длина не нужна.
>>> import random
>>> 
>>> WORDS = (i for i in ("питон", "мышь", "кислород", "карандаш", "ответ", "стакан"))
>>> index, word = random.choice(tuple(enumerate(WORDS)))
>>> index, word
(1, 'мышь')
>>>
Это к тому, что если ты сделал функцию, то встаёт вопрос, что она будет принимать в виде списка слов: кортежи или списки, или любые итерабельные объекты.
This is a "lo-fi" version of our main content. To view the full version with more information, formatting and images, please click here.
Powered by DjangoBB