varunl의 현재 허용되는 답변
>>> l = [None] * 10
>>> l
[None, None, None, None, None, None, None, None, None, None]
숫자와 같은 비 참조 유형에 적합합니다. 불행히도 목록 목록을 만들려면 참조 오류가 발생합니다. Python 2.7.6의 예 :
>>> a = [[]]*10
>>> a
[[], [], [], [], [], [], [], [], [], []]
>>> a[0].append(0)
>>> a
[[0], [0], [0], [0], [0], [0], [0], [0], [0], [0]]
>>>
보시다시피 각 요소는 동일한 목록 객체를 가리키고 있습니다. 이 문제를 해결하기 위해 각 위치를 다른 객체 참조로 초기화하는 메소드를 만들 수 있습니다.
def init_list_of_objects(size):
list_of_objects = list()
for i in range(0,size):
list_of_objects.append( list() ) #different object reference each time
return list_of_objects
>>> a = init_list_of_objects(10)
>>> a
[[], [], [], [], [], [], [], [], [], []]
>>> a[0].append(0)
>>> a
[[0], [], [], [], [], [], [], [], [], []]
>>>
함수를 작성하는 대신이 작업을 수행하는 기본 내장 파이썬 방법이있을 수 있지만 그 기능이 무엇인지 잘 모르겠습니다. 기꺼이 정정 해 드리겠습니다!
편집 : 그것은 [ [] for _ in range(10)]
예 :
>>> [ [random.random() for _ in range(2) ] for _ in range(5)]
>>> [[0.7528051908943816, 0.4325669600055032], [0.510983236521753, 0.7789949902294716], [0.09475179523690558, 0.30216475640534635], [0.3996890132468158, 0.6374322093017013], [0.3374204010027543, 0.4514925173253973]]