이것은 파이썬이 지름길을 가지고있는 것처럼 보입니다. 목록에 항목을 N 번 추가하고 효과적으로 다음을 수행합니다.
l = []
x = 0
for i in range(100):
l.append(x)
이를 위해 다음과 같은 "최적화 된"방법이 있어야한다고 생각합니다.
l.append_multiple(x, 100)
거기 있어요?
이것은 파이썬이 지름길을 가지고있는 것처럼 보입니다. 목록에 항목을 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]
a.extend(b*n)
경우 n
B의 반복 요소에 원하는 배
l.extend([x] * 100)
내 상황에 가장 잘 맞기 때문에 끝났습니다 . Amber는 가장 포괄적 인 것으로 답을 얻었습니다. 감사!