2014-02-05 3 views
2

Я новичок в python. Нашел код онлайн, который я пытаюсь понять. Может ли кто-нибудь помочь мне понять, что на самом деле делает следующее утверждение?Что делает это утверждение?

self.record = [random.choice([0.0, 1.0]) for _ in range(10)] 

ответ

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) 
+0

Спасибо так много! Теперь начинает иметь смысл. – user3078335

+0

Только для записи 'random.choice()' не будет принимать произвольный [итерируемый] (http://docs.python.org/glossary.html#term-iterable). Аргумент должен быть [последовательностью] (http://docs.python.org/glossary.html#term-sequence). –

+0

@SvenMarnach Полезно знать. Обновление. – SethMMorton

1

Это означает, что он говорит:

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. 
Смежные вопросы