[Python] Заполнить массив нулями
От: Jenyay http://jenyay.net
Дата: 14.02.07 12:57
Оценка:
Можно ли в питоне создать массив (или список) определенного размера и сразу заполнить его нулями?
... << RSDN@Home 1.2.0 alpha rev. 655>>
Софт, исходники и фото
Re: [Python] Заполнить массив нулями
От: Константин Россия  
Дата: 14.02.07 13:32
Оценка: 6 (1)
Здравствуйте, Jenyay, Вы писали:

J>Можно ли в питоне создать массив (или список) определенного размера и сразу заполнить его нулями?


a=[0 for x in range(100)]
a=[0 for _ in range(100)]
a=[0 for x in xrange(100)]
a=[0 for _ in xrange(100)]
a=[0]*100


Со последним способом нужно быть осторожным
a=[[]]*100
a[0].append(1) # сюрприз
Re: [Python] Заполнить массив нулями
От: Кодт Россия  
Дата: 14.02.07 16:03
Оценка: 7 (2)
Здравствуйте, Jenyay, Вы писали:

J>Можно ли в питоне создать массив (или список) определенного размера и сразу заполнить его нулями?


x = [0] * 10 # [0,0,...,0]
x = [0,1,2] * 10 # [0,1,2,0,1,2,...,0]
x = ["hello"] * 10 # ["hello","hello",...,"hello"]

# а теперь внимание, шухер!
x = [[0,1,2]] * 10 # [[0,1,2],[0,1,2],...,[0,1,2]]
x[0][0] = 3 # [[3,1,2],[3,1,2],...,[3,1,2]] - потому что внутренний список запомнился по ссылке
... << RSDN@Home 1.2.0 alpha rev. 655>>
Перекуём баги на фичи!
Re[2]: [Python] Заполнить массив нулями
От: Jenyay http://jenyay.net
Дата: 14.02.07 16:45
Оценка:
Здравствуйте, Константин, Вы писали:

К>
К>a=[0 for x in range(100)]
К>a=[0 for _ in range(100)]
К>a=[0 for x in xrange(100)]
К>a=[0 for _ in xrange(100)]
К>a=[0]*100
К>


Спасибо, только не понял почему работают первые 4 способо В справке такого выражения для for не нашел.
... << RSDN@Home 1.2.0 alpha rev. 655>>
Софт, исходники и фото
Re[2]: [Python] Заполнить массив нулями
От: Jenyay http://jenyay.net
Дата: 14.02.07 16:45
Оценка:
Здравствуйте, Кодт, Вы писали:

К>
К>x = [0] * 10 # [0,0,...,0]
К>x = [0,1,2] * 10 # [0,1,2,0,1,2,...,0]
К>x = ["hello"] * 10 # ["hello","hello",...,"hello"]

К># а теперь внимание, шухер!
К>x = [[0,1,2]] * 10 # [[0,1,2],[0,1,2],...,[0,1,2]]
К>x[0][0] = 3 # [[3,1,2],[3,1,2],...,[3,1,2]] - потому что внутренний список запомнился по ссылке
К>


Спасибо, а я копал в сторону range, думал с ним надо как-то извернуться
... << RSDN@Home 1.2.0 alpha rev. 655>>
Софт, исходники и фото
Re[3]: [Python] Заполнить массив нулями
От: Константин Россия  
Дата: 15.02.07 10:07
Оценка: 6 (1)
Здравствуйте, Jenyay, Вы писали:

К>>a=[0 for x in range(100)]


J>Спасибо, только не понял почему работают первые 4 способо В справке такого выражения для for не нашел.


Это называется List Comprehensions.
Аналоги есть в haskell, erlang,...
Re[2]: [Python] Заполнить массив нулями
От: Кодт Россия  
Дата: 15.02.07 11:14
Оценка:
Поправочка. Я там очепятался, из чего можно было сделать неверный вывод, будто [0,1,2]*10 даёт 10-элементный массив. На самом деле будет, конечно, 30-элементный.
К>x = [0,1,2] * 10 # [0,1,2,0,1,2,...,0,1,2]
... << RSDN@Home 1.2.0 alpha rev. 655>>
Перекуём баги на фичи!
Re[4]: [Python] Заполнить массив нулями
От: Jenyay http://jenyay.net
Дата: 15.02.07 15:01
Оценка:
Здравствуйте, Константин, Вы писали:

К>Это называется List Comprehensions.


Здорово, спасибо, удобная штука
... << RSDN@Home 1.2.0 alpha rev. 655>>
Софт, исходники и фото
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.