Рубрики
Без рубрики

Создайте список случайных чисел – самый питонический путь

https://youtu.be/b2v2e1bme-u Вы хотите инициализировать список случайных чисел? В этой статье я покажу вам четырех разных способа достижения этого — вместе с краткосрочной дискуссией о «самым питонным способам». Проблема: учитывая целое число n. Создайте список n элементов в определенном интервале (пример интервала: [0, 20]). # n = … Создать список случайных чисел – самый питонический путь Подробнее »

Автор оригинала: Chris.

Вы хотите инициализировать список с какими-то случайными числами? В этой статье я покажу вам четырех разных способа достижения этого – наряду с коротким обсуждением о «Самый питонический путь» Отказ

Проблема : Учитывая целое число N Отказ Создать список N Элементы в определенном интервале (пример интервала: [0, 20] ).

# n = 5 --> [2, 3, 1, 4, 3]
# n = 3 --> [10, 12, 1]
# n = 10 --> [8, 2, 18, 10, 4, 19, 5, 9, 8, 1]

Решение : Вот быстрое обзор о том, как вы можете создать список случайных чисел:

  • Метод 1 : [Random.random () для _ в диапазоне (10)] Создать список случайных поплавок.
  • Метод 2 : [Random.randint (0, 999) для _ в диапазоне (10)] Создать список случайных INT.
  • Метод 3 : Randlist = []; Для _ в диапазоне (10): Randlist.append (Random.randint (0, 99)) Создать список случайных INT.
  • Метод 4 : Randlist.sample (диапазон (20), 10) Создать список случайных INT.

Вы можете попробовать те сами в нашем интерактивном коде Shell:

Упражнение : Измените интервал каждого метода в [0, <ваш возраст>] и запустите код.

Метод 1: Понимание списка для случайного поплавкового списка [0, 1]

Понимание списка является компактным способом создания списков. Простая формула – [Выражение + контекст] Отказ

  • Выражение : Что делать с элементом каждого списка?
  • Контекст : Какие элементы для выбора? Контекст состоит из произвольного количества для и Если заявления.
# Method 1: List Comprehension Random Float List [0, 1]
import random
randlist = [random.random() for _ in range(10)]

В моей оболочке Python результат заключается в следующем:

print(randlist)
# [0.06472744987876633, 0.011889634172418173, 0.70189711954834, 0.030063483145627568, 0.22255082691969674, 0.26704646386061337, 0.3242939534531408, 0.1781476583083168, 0.5367990394305883, 0.7621210982784024]

В коде вы впервые импортируете случайный модуль.

Тогда вы создаете список случайных поплавок, повторно вызов Random.random () который генерирует случайный номер поплавка от 0 до 1 каждый раз, когда он называется.

Вы называете это в десять раз, как определено в контексте. для _ в диапазоне (10) Отказ Обратите внимание, что подчеркивание служит переменной «выброс», поскольку вам на самом деле не нужно его создавать список.

Также обратите внимание, что оператор понимания списка оценивает выражение несколько раз – и не только один раз в начале. Вот почему все номера в списке разные.

Вы можете легко расширить создание поплавок в большем интервале, умножив случайно созданный поплавок с постоянной: [Random.random () * 999 для _ в диапазоне (10)] создал бы список случайных поплавок в интервале [0, 999] Отказ

Если вы боретесь с пониманием понимания списка, посмотрите мое видео объяснения:

Использование списка понимание для генерации списка случайных чисел читабелее, кратко и эффективно. Были ли это не для четвертого метода, я бы рассмотрел это самым питонным способом создания списка случайных поплавков.

Метод 2: Понимание списка для случайного целочисленного списка [0, 999]

Просто ради полноты, вот заявление об понимании списка, которое создает список случайных целые числа В интервале [0, 999]:

# Method 2: List Comprehension Random Int List [0, 999]
import random
randlist = [random.randint(0, 999) for _ in range(10)]

В моей оболочке Python результат заключается в следующем:

print(randlist)
# [298, 218, 58, 260, 485, 192, 588, 615, 42, 499]

Вы используете Random.randint (0, 999) Функция для создания случайного целочисленного значения между начальным значением 0 и конечное значение 999, поэтому все созданные целые числа находятся в интервале [0, 999].

Это очень питон и читаемый способ создать список случайных целых чисел. Вы можете перестать читать сразу и использовать его в своем собственном коде.

Способ 3: для петли Средний INT List [0, 99]

Альтернатива, которые часто используются не-Python Coders, состоит в том, чтобы использовать простые для цикла, который делает то же самое, что и понимание списка (но требует больше места):

# Method 3: For Loop Random Int List [0, 99]
import random
randlist = []
for _ in range(10):
    randlist.append(random.randint(0, 99))

В моей оболочке Python результат заключается в следующем:

print(randlist)
# [19, 35, 0, 13, 36, 15, 13, 65, 41, 99]

Опять же, вы используете переменную подчеркивания выбросов, поскольку случайное число не является функцией переменной петли. Каждое два звонка к Random.randint () Функция независима.

Я бы рассмотрел это минимум Питоновый способ решить эту проблему.

Способ 4: Random.sample ()

Наконец, мы приходим на самый пифитонический способ решить эту проблему: стоять на плечах гигантов и использовать существующие встроенные функциональные возможности. Random.sample () Метод принимает «вселенную», из которой нарисованы случайные числа и размер списка N -И рисунки N Случайные числа от вашей вселенной.

# Method 4: random.sample()
import random
# Generate 10 random numbers between 0 and 20 (included)
randlist = random.sample(range(20), 10)

В моей оболочке Python результат заключается в следующем:

print(randlist)
# [1, 3, 0, 14, 7, 9, 13, 4, 12, 8]

Вы используете вселенную Диапазон (20) Из первых 20 целых чисел 0, …, 19 и нарисуйте 10 случайных элементов из вселенной. Обратите внимание, что по умолчанию не разрешены дубликаты. Если вселенная невелика, чем размер списка n, брошена ошибка:

ValueError: Sample larger than population or is negative

Обсуждение

В этом руководстве вы узнали четыре метода для решения проблемы создания списка случайных чисел. Объективно, самый питонический способ выполнить это четвертый метод: используйте Random.sample () Функция, как это реализовано, чтобы сделать именно это.

Но субъективно, я бы использовал первый или второй метод на основе понимания списка для создания списка случайных поплавков или целых чисел.

Почему? Потому что я ленивый и зная Random.random () и Random.randint () Функции уже достаточно, чтобы эффективно решить проблему. На практике я не хочу тратить слишком много энергии, пытаясь запомнить функции кода, которые не улучшают читаемость, ни эффективность моего кода.

Куда пойти отсюда?

Достаточно теории, давайте познакомимся!

Чтобы стать успешным в кодировке, вам нужно выйти туда и решать реальные проблемы для реальных людей. Вот как вы можете легко стать шестифункциональным тренером. И вот как вы польские навыки, которые вам действительно нужны на практике. В конце концов, что такое использование теории обучения, что никто никогда не нуждается?

Практические проекты – это то, как вы обостряете вашу пилу в кодировке!

Вы хотите стать мастером кода, сосредоточившись на практических кодовых проектах, которые фактически зарабатывают вам деньги и решают проблемы для людей?

Затем станьте питоном независимым разработчиком! Это лучший способ приближения к задаче улучшения ваших навыков Python – даже если вы являетесь полным новичком.

Присоединяйтесь к моему бесплатным вебинаре «Как создать свой навык высокого дохода Python» и посмотреть, как я вырос на моем кодированном бизнесе в Интернете и как вы можете, слишком от комфорта вашего собственного дома.

Присоединяйтесь к свободному вебинару сейчас!

Работая в качестве исследователя в распределенных системах, доктор Кристиан Майер нашел свою любовь к учению студентов компьютерных наук.

Чтобы помочь студентам достичь более высоких уровней успеха Python, он основал сайт программирования образования Finxter.com Отказ Он автор популярной книги программирования Python One-listers (Nostarch 2020), Coauthor of Кофе-брейк Python Серия самооставленных книг, энтузиаста компьютерных наук, Фрилансера и владелец одного из лучших 10 крупнейших Питон блоги по всему миру.

Его страсти пишут, чтение и кодирование. Но его величайшая страсть состоит в том, чтобы служить стремлению кодер через Finxter и помогать им повысить свои навыки. Вы можете присоединиться к его бесплатной академии электронной почты здесь.