2011-01-11 3 views
40

이것은 Python에 대한 단축키가있는 것처럼 보입니다. 나는 효과적으로을하고, 목록에 N 번 항목을 추가하려면 :Python : N 번 목록에 항목을 추가하십시오.

l.append_multiple(x, 100) 

: 그에 대한 "최적의"방법과 같이이 있어야 나에게 보일 수있을 것입니다

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

거기 있니?

+3

내 상황에 가장 적합하기 때문에'l.extend ([x] * 100)'로 끝납니다. 앰버는 가장 포괄적 인 답변을 제공합니다. 감사! – Toji

+4

이것을 사용하기 전에 파이썬의 참조 의미를 이해해야합니다. l에 덧붙여지는 x는 모두 같은 x이므로, 그 중 하나를 돌연변이시키는 것은 그들 모두에게 영향을 미칩니다 (모두 100 회, 100 회라고 함). –

+0

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

답변

59

이 할 수 있습니다 : 참조로 저장되며이 하위 목록처럼 (나중에 수정할 수있는 값에 대한

l = [0] * 100 
# [0, 0, 0, 0, 0, ...] 

l = ['foo'] * 100 
# ['foo', 'foo', 'foo', 'foo', ...] 

또는 dicts) : 첫 번째 방법은 사장님, 상수 값 만 좋은 생각이 왜

l = [{} for x in range(100)] 

(이유 e 정수 또는 문자열은 <list>*<number> 구문을 사용할 때 얕은 사본 만 있기 때문에 [{}]*100과 같이 입력하면 동일한 사전에 100 개의 참조가 생겨 결국 하나가 변경되면 모두 변경됩니다 . int와 문자열은 변경할 수 없으므로 문제가되지 않습니다.

기존 목록에 추가하려면 해당 목록의 extend() 메서드를 사용할 수 있습니다 (목록 생성과 함께). 위의 기술을 통해 추가 할 사항) :

a = [1,2,3] 
b = [4,5,6] 
a.extend(b) 
# a is now [1,2,3,4,5,6] 
+1

@smihael 어, 네? http://ideone.com/SffARE – Amber

+0

또는 두 제안을'a.extend (b * n)'형식으로 결합하십시오. 'n'은 b에서 요소를 반복 할 시간입니다 – DarkCygnus

3

당신은 불변의 데이터 유형에 대한 지능형리스트

l = [x for i in range(10)]; 
15

end를 사용하여 목록 이해를 추가하십시오.

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

자세한 내용은 Python docs을 참조하십시오.

4

Itertools repeat with list extend.

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

과제에 대한 다른 경로로 이동해야했지만 이것이 결국 해결되었습니다.

my_array += ([x] * repeated_times) 
관련 문제