IT story

파이썬에서 0의 목록

hot-time 2020. 4. 17. 08:25
반응형

파이썬에서 0의 목록


이 질문에는 이미 답변이 있습니다.

list0 만 포함 하는 만들려면 어떻게 해야합니까? list각각 int대해 0을 만들 수 있기를 원합니다 .range(10)

예를 들어, int범위에있는 경우 다음 4얻습니다.

[0,0,0,0]

그리고 7:

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

#add code here to figure out the number of 0's 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]
>>> 

$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 [0] * n으로 목록을 생성하는 데 사용해야 합니다 n.

[]가 list ()보다 빠른 이유보기

이 비록 잡았다이며, 모두 itertools.repeat[0] * n요소가 동일한 참조 목록을 만들 것입니다 id. 이것은 정수 또는 문자열과 같은 불변의 객체에는 문제가 아니지만 목록의 목록 ( [[]] * n) 과 같은 가변 객체의 목록을 만들려고하면 모든 요소가 동일한 객체를 참조합니다.

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

[0] * nrepeat처음 액세스 할 때 느리게 목록을 작성하는 데 사용할 수있는 동안 목록을 즉시 작성합니다.

실제로 많은 양의 데이터를 처리하고 있고 문제가 목록의 가변 길이 목록 또는 여러 데이터 유형이 필요하지 않은 경우 numpy배열 을 사용하는 것이 좋습니다 .

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

numpy 어레이는 또한 더 적은 메모리를 소비합니다.


모든 값이 동일한 목록을 만드는 가장 쉬운 방법은 한 요소 목록에을 곱하는 것 n입니다.

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

따라서 루프의 경우 :

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

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

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

zlists[0]0이 0 인 zlists[1]목록, 1이 0 인 zlists[2]목록, 2가 0 인 목록 등입니다.


zeros=[0]*4

4위의 예에서 원하는 숫자로 바꿀 수 있습니다.


목록에서 임의의 수의 0을 반환하는 함수를 원하면 다음을 시도하십시오.

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

list = make_zeros(10)

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

xrange 방법 은 다음과 같습니다 .

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

참고 URL : https://stackoverflow.com/questions/8528178/list-of-zeros-in-python

반응형