Python : N 번 목록에 항목 추가


91

이것은 파이썬이 지름길을 가지고있는 것처럼 보입니다. 목록에 항목을 N 번 추가하고 효과적으로 다음을 수행합니다.

l = []
x = 0
for i in range(100):
    l.append(x)

이를 위해 다음과 같은 "최적화 된"방법이 있어야한다고 생각합니다.

l.append_multiple(x, 100)

거기 있어요?


9
l.extend([x] * 100)내 상황에 가장 잘 맞기 때문에 끝났습니다 . Amber는 가장 포괄적 인 것으로 답을 얻었습니다. 감사!
Toji

4
사소하지 않은 것에 이것을 사용하기 전에 파이썬의 참조 의미를 이해했는지 확인하십시오. l에 추가 된 x는 모두 동일한 x이므로 그중 하나를 변경하면 모두 영향을받습니다 (모두 100 번 참조).
Karl Knechtel

1
설명 : 정수에 사용하고 있으므로 사용이 안전합니다.
Toji

답변:


132

변경 불가능한 데이터 유형의 경우 :

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]

1
또는의 형태로 모두 제안을 결합 할 a.extend(b*n)경우 nB의 반복 요소에 원하는 배
DarkCygnus

26

목록 이해력을 끝에 추가하려면 extend를 사용하십시오.

l.extend([x for i in range(100)])

자세한 내용은 Python 문서 를 참조하세요.


6

나는 과제를 위해 다른 길을 가야했지만 이것이 내가 끝내게 된 것입니다.

my_array += ([x] * repeated_times)

5

Itertools는 목록 확장과 결합하여 반복됩니다.

from itertools import repeat
l = []
l.extend(repeat(x, 100))


당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.