Список нулей в python

Как я могу создать list, который содержит только нули? Я хочу иметь возможность создавать нули list для каждого int в range(10)

Например, если int в диапазоне 4, я получу:

[0,0,0,0]

и для 7:

[0,0,0,0,0,0,0]

Ответ 1

#add code here to figure out the number of 0 you need, naming the variable n.
listofzeros = [0] * n

если вы хотите поместить его в функцию, просто запустите этот код и добавьте return listofzeros

Что будет выглядеть так:

def zerolistmaker(n):
    listofzeros = [0] * n
    return listofzeros

вывод образца:

>>> zerolistmaker(4)
[0, 0, 0, 0]
>>> zerolistmaker(5)
[0, 0, 0, 0, 0]
>>> zerolistmaker(15)
[0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0]
>>> 

Ответ 2

$python 2.7.8

from timeit import timeit
import numpy

timeit("list(0 for i in xrange(0, 100000))", number=1000)
> 8.173301935195923

timeit("[0 for i in xrange(0, 100000)]", number=1000)
> 4.881675958633423

timeit("[0] * 100000", number=1000)
> 0.6624710559844971

timeit('list(itertools.repeat(0, 100000))', 'import itertools', number=1000)
> 1.0820629596710205

Вы должны использовать [0] * n для создания списка с n нулями.

Посмотрите, почему [] быстрее, чем список()

Однако есть как-то, но itertools.repeat и [0] * n будут создавать списки, чьи элементы относятся к тому же id. Это не проблема с неизменяемыми объектами, такими как целые числа или строки, но если вы попытаетесь создать список изменяемых объектов, например список списков ([[]] * n), то все элементы будут ссылаться на один и тот же объект.

a = [[]] * 10
a[0].append(1)
a
> [[1], [1], [1], [1], [1], [1], [1], [1], [1], [1]]

[0] * n создаст список сразу, пока repeat может использоваться для создания списка лениво при первом доступе.

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

timeit('numpy.zeros(100000, numpy.int)', 'import numpy', number=1000)
> 0.057849884033203125

numpy массивы также будут потреблять меньше памяти.

Ответ 3

Самый простой способ создать список, в котором все значения одинаковы, - это умножение одного элемента на n.

>>> [0] * 4
[0, 0, 0, 0]

Итак, для вашего цикла:

for i in range(10):
    print [0] * i

Ответ 4

$ python3
>>> from itertools import repeat
>>> list(repeat(0, 7))
[0, 0, 0, 0, 0, 0, 0]

Ответ 5

zlists = [[0] * i for i in range(10)]

zlists[0] - это список из 0 нулей, zlists[1] - это список из 1 нуля, zlists[2] - список из двух нулей и т.д.

Ответ 6

zeros=[0]*4

вы можете заменить 4 в приведенном выше примере любым количеством, которое вы хотите.

Ответ 7

Если вам нужна функция, которая вернет произвольное количество нулей в списке, попробуйте следующее:

def make_zeros(number):
    return [0] * number

list = make_zeros(10)

# list now contains: [0, 0, 0, 0, 0, 0, 0, 0, 0, 0]

Ответ 8

Вот способ xrange:

list(0 for i in xrange(0,5))