0

Вопрос про списки. Python.

Возможно ли вернуть из списка случайный элемент не импортируя модуль random?

20th Dec 2020, 10:25 AM
😎_M_😎
😎_M_😎 - avatar
24 odpowiedzi
+ 3
Вот накалякал пример. Своего рода это костыль, но как вариант https://code.sololearn.com/cnX3HdKAcBJL/?ref=app
20th Dec 2020, 11:13 AM
Просто Павел
Просто Павел - avatar
+ 4
😎_M_😎 Напишите тут, если вам ответят там
21st Dec 2020, 8:28 AM
Просто Павел
Просто Павел - avatar
+ 2
😎_M_😎 Потому что с числами это не работает. И вообще лучше использовать рандом, не вижу причин его не использовать. Ну или если этот вопрос был задан чисто для интереса, без целей практического применения, то ладно.
20th Dec 2020, 3:43 PM
Просто Павел
Просто Павел - avatar
+ 2
😎_M_😎 это, увы не могу сказать. Надо узнать, какой работает set(). Надо спросить у какого-нибудь сеньора. Задайте вопрос на Хабр Q A
21st Dec 2020, 8:26 AM
Просто Павел
Просто Павел - avatar
+ 2
Valerii Mamontov ну и впринципе очевидно, сервера у сололерн тоже на linux
22nd Jan 2021, 12:28 PM
Просто Павел
Просто Павел - avatar
+ 1
Павел Рысев, спасибо, вот кстати ваш вариант, но тот что хотел я https://code.sololearn.com/c1JlkUAqcIFG/?ref=app
20th Dec 2020, 2:53 PM
😎_M_😎
😎_M_😎 - avatar
+ 1
Valerii Mamontov понял о чем вы.
22nd Jan 2021, 10:37 AM
Просто Павел
Просто Павел - avatar
+ 1
Valerii Mamontov прикол в том что при set списка чисел у вас все вемя итоговый список будет один и тот же. С буквами не так.
22nd Jan 2021, 10:44 AM
Просто Павел
Просто Павел - avatar
22nd Jan 2021, 12:01 PM
Просто Павел
Просто Павел - avatar
+ 1
Valerii Mamontov я проверил код запуская код через системный интерпретатор python в linux. Результат - все время разное
22nd Jan 2021, 12:13 PM
Просто Павел
Просто Павел - avatar
+ 1
Valerii Mamontov у меня 3.9.1. Хз совсем, от чего так
22nd Jan 2021, 12:26 PM
Просто Павел
Просто Павел - avatar
0
Павел Рысев, а почёму это костыль? что не так?
20th Dec 2020, 2:53 PM
😎_M_😎
😎_M_😎 - avatar
0
Просто Павел, я проверил, с числами действительно не работает, но почему?
21st Dec 2020, 7:36 AM
😎_M_😎
😎_M_😎 - avatar
0
Просто Павел, 😎_M_😎 Когда вы преобразуете список во "множество" (set(a)), то повторяющиеся элементы списка "схлопываются". Остаются только уникальные элементы, независимо число это или строки. a = [1, 4, 1, 3, 4] print(set(a)) # (1, 3, 4) В момент преобразования происходит сортировка элементов в случайном порядке. Например: s = "hello world" my_set = set(s) print(my_set) # {'o', 'd', 'h', 'l', ' ', 'r', 'w', 'e'} При первом приближении кажется, что в ходе преобразования списка из чисел во множество происходит сортировка и числа упорядочиваются. 1, 3, 4... На самом деле это случайность. Если взять большой список из 10-15 чисел, то вы увидите, что нет никакой сортировки. big_list = [1, 4, 1, 3, 49, 20, 22, 2, 12, 1, 34, 234, 45, 21, 45, 2, 1, 56, 34] print(set(big_list)) #{1, 2, 3, 4, 34, 234, 12, 45, 49, 20, 21, 22, 56}
19th Jan 2021, 8:28 PM
Valerii Mamontov
Valerii Mamontov - avatar
0
Просто Павел нет, с буквами он тоже будет всегда одинаковым
22nd Jan 2021, 11:58 AM
Valerii Mamontov
Valerii Mamontov - avatar
0
Просто Павел не важно из каких элементов состоит список, из чисел или из строк - print(set(big_list)) всегда будет выдавать одинаковый результат >>> big_list = ["1", "4", "1", "3", "49", "20", "22", "2", "12", "234", "45", "21", "45", "2", "1", "56", "34", "a", "bbnh", "a"] >>> print(set(big_list)) {'3', '4', '234', '56', '34', '1', 'bbnh', 'a', '20', '12', '45', '22', '49', '2', '21'} >>> print(set(big_list)) {'3', '4', '234', '56', '34', '1', 'bbnh', 'a', '20', '12', '45', '22', '49', '2', '21'} >>> print(set(big_list)) {'3', '4', '234', '56', '34', '1', 'bbnh', 'a', '20', '12', '45', '22', '49', '2', '21'} >>> print(set(big_list)) скорей всего в методе set происходит следующее: 1. удаляются повторяющиеся элементы 2.создаётся новый список (множество) 3.при создании (для вывода чисел в случайном порядке) используется random то есть генерирование случайного порядка - это псевдогенерация поэтому случайный порядок чисел всегда получается одинаковым Погуглите "random.seed python"
22nd Jan 2021, 11:59 AM
Valerii Mamontov
Valerii Mamontov - avatar
0
Просто Павел и тут ещё такой момент: если повторять код в сололерн - один результат а если на компе, то другой
22nd Jan 2021, 12:06 PM
Valerii Mamontov
Valerii Mamontov - avatar
0
Просто Павел думаю, тут всё дело в площадке. Код в сололерне всегда выполняется на сервере. И при каждом запуске он запускает ... скажем так "новый интерпретатор", каждый раз он новый. Код на компе запускает всегда один и тот же интерпретатор (процессор или процесс).
22nd Jan 2021, 12:08 PM
Valerii Mamontov
Valerii Mamontov - avatar
0
Просто Павел я конечно сильно упрощаю, но тут главное донести мысль.
22nd Jan 2021, 12:09 PM
Valerii Mamontov
Valerii Mamontov - avatar
0
Просто Павел запустите Ваш код на компе и Вы сильно удивитесь.
22nd Jan 2021, 12:11 PM
Valerii Mamontov
Valerii Mamontov - avatar