Можно ли в питоне создать массив (или список) определенного размера и сразу заполнить его нулями?
... << RSDN@Home 1.2.0 alpha rev. 655>>
Здравствуйте, 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) # сюрприз
Здравствуйте, 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>>
Здравствуйте, Константин, Вы писали:
К>К>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>>
Здравствуйте, Кодт, Вы писали:
К>К>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>>
Здравствуйте, Jenyay, Вы писали:
К>>a=[0 for x in range(100)]
J>Спасибо, только не понял почему работают первые 4 способо В справке такого выражения для for не нашел.
Это называется
List Comprehensions.
Аналоги есть в haskell, erlang,...
Поправочка. Я там очепятался, из чего можно было сделать неверный вывод, будто [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>>
Здравствуйте, Константин, Вы писали:
К>Это называется List Comprehensions.
Здорово, спасибо, удобная штука
... << RSDN@Home 1.2.0 alpha rev. 655>>