Я новичок в python. Нашел код онлайн, который я пытаюсь понять. Может ли кто-нибудь помочь мне понять, что на самом деле делает следующее утверждение?Что делает это утверждение?
self.record = [random.choice([0.0, 1.0]) for _ in range(10)]
Я новичок в python. Нашел код онлайн, который я пытаюсь понять. Может ли кто-нибудь помочь мне понять, что на самом деле делает следующее утверждение?Что делает это утверждение?
self.record = [random.choice([0.0, 1.0]) for _ in range(10)]
random.choice([0.0, 1.0])
Метод random.choice
будет случайным образом выбрать элемент заданной последовательности. Здесь он будет произвольно выбирать 0.0
, или 1.0
.
range(10)
Эта функция создает список 10 элементов (или итерацию на Python3)
[function() for _ in range(10)]
Это список понимание, что будет вызывать функцию 10 раз, и поместить результаты в виде списка. _
является питон конвенция означает «мне нужен переменный здесь, но я не буду использовать это значение»
[random.choice([0.0, 1.0]) for _ in range(10)]
Это создает список 10 элементов длинный, где каждый элемент является либо 0.0
или 1.0
, случайно выбранным.
self.record = [random.choice([0.0, 1.0]) for _ in range(10)]
Это помещает список 10 элементов в экземпляр переменной record
внутри текущего класса.
Это эквивалентно следующему коду
self.record = []
for _ in range(10):
num = random.choice([0.0, 1.0])
self.record.append(num)
Это означает, что он говорит:
self.record = [ random.
#self.record shall be a name for: a list consisting of one random
choice( [0.0, 1.0]) for _
#choice taken from the list [0.0, 1.0], for each value (which we don't care about)
in range( 10)]
#in a range from 0 up to but not including 10.
Спасибо так много! Теперь начинает иметь смысл. – user3078335
Только для записи 'random.choice()' не будет принимать произвольный [итерируемый] (http://docs.python.org/glossary.html#term-iterable). Аргумент должен быть [последовательностью] (http://docs.python.org/glossary.html#term-sequence). –
@SvenMarnach Полезно знать. Обновление. – SethMMorton