이것은 파이썬이 지름길을 가지고있는 것처럼 보입니다. 목록에 항목을 N 번 추가하고 효과적으로 다음을 수행합니다.
l = []
x = 0
for i in range(100):
l.append(x)
이를 위해 다음과 같은 “최적화 된”방법이 있어야한다고 생각합니다.
l.append_multiple(x, 100)
거기 있어요?
답변
변경 불가능한 데이터 유형의 경우 :
l = [0] * 100
# [0, 0, 0, 0, 0, ...]
l = ['foo'] * 100
# ['foo', 'foo', 'foo', 'foo', ...]
참조로 저장되고 나중에 수정할 수있는 값의 경우 (예 : 하위 목록 또는 사전) :
l = [{} for x in range(100)]
단지 얕은 복사가 사용 않을 때이기 때문에 (첫 번째 방법은의 int 또는 문자열처럼 만 상수 값에 대한 좋은 생각입니다 이유이며, <list>*<number>
구문, 당신은 같은 것을했다 따라서 경우 [{}]*100
, 100 참조로 끝날 것 동일한 사전에-그래서 그들 중 하나를 변경하면 모두 변경됩니다. 정수와 문자열은 변경 불가능하므로 문제가되지 않습니다.)
기존 목록에 추가하려는 경우 extend()
해당 목록 의 방법을 사용할 수 있습니다 (위의 기술을 통해 추가 할 항목 목록 생성과 함께).
a = [1,2,3]
b = [4,5,6]
a.extend(b)
# a is now [1,2,3,4,5,6]
답변
답변
나는 과제를 위해 다른 길을 가야했지만 이것이 내가 끝내게 된 것입니다.
my_array += ([x] * repeated_times)
답변
Itertools는 목록 확장과 결합하여 반복됩니다.
from itertools import repeat
l = []
l.extend(repeat(x, 100))
답변
목록 이해력으로 할 수 있습니다.
l = [x for i in range(10)];
답변
l = []
x = 0
l.extend([x]*100)