반응형
리스트의리스트를 초기화하는 파이썬
가능한 중복 :
파이썬 목록 추가 동작
길이가 n 인 목록 목록을 초기화하려고합니다.
x = [[]] * n
그러나 이것은 어떻게 든 목록을 서로 연결합니다.
>>> x = [[]] * 3
>>> x[1].append(0)
>>> x
[[0], [0], [0]]
나는 다음과 같은 것을 기대합니다 :
[[], [0], []]
어떤 아이디어?
문제는 메모리에서 모두 동일한 정확한 목록이라는 것입니다.
[x]*n
구문 을 사용할 때 얻을 수있는 것은
n
많은
x
객체 의 목록 이지만 모두 동일한 객체에 대한 참조입니다. 그것들은 별개의 인스턴스가 아니라
n
동일한 인스턴스에 대한 참조 일뿐 입니다.3 가지 다른 목록을 만들려면 다음과 같이하십시오.
x = [[] for i in range(3)]
이것은 당신에게 3 개 별도의 인스턴스를 제공합니다
[]
당신이 원하는이다,
[[]]*n
비슷하다
l = []
x = []
for i in range(n):
x.append(l)
while
[[] for i in range(3)]
은 다음과 유사합니다.
x = []
for i in range(n):
x.append([]) # appending a new list!
In [20]: x = [[]] * 4
In [21]: [id(i) for i in x]
Out[21]: [164363948, 164363948, 164363948, 164363948] # same id()'s for each list,i.e same object
In [22]: x=[[] for i in range(4)]
In [23]: [id(i) for i in x]
Out[23]: [164382060, 164364140, 164363628, 164381292] #different id(), i.e unique objects this time
참고 URL :
https://stackoverflow.com/questions/12791501/python-initializing-a-list-of-lists
반응형
'Programming' 카테고리의 다른 글
파이썬에서 exit (0)과 exit (1)의 차이점 (0) | 2020.06.19 |
---|---|
데스크톱 환경에서 가상 컴퓨터를 실행하기 위해 vagrant 사용 (0) | 2020.06.19 |
기존 ASP.NET MVC (5) 웹 응용 프로그램 프로젝트에 웹 API를 추가하는 방법은 무엇입니까? (0) | 2020.06.19 |
무중단 프로세스 란 무엇입니까? (0) | 2020.06.19 |
오프라인에서 OKHttp로 Retrofit을 사용하여 캐시 데이터를 사용할 수 있음 (0) | 2020.06.18 |