빈 목록 끝에 추가하는 방법은 무엇입니까?
목록이 있습니다.
list1=[]
목록의 길이가 결정되지 않았으므로 다음과 같이 list1 끝에 개체를 추가하려고합니다.
for i in range(0, n):
list1=list1.append([i])
하지만 내 출력은 다음 오류를 계속 표시합니다. AttributeError : 'NoneType'object has no attribute 'append'
list1이 빈 목록으로 시작하기 때문입니까? 이 오류를 어떻게 수정합니까?
append
실제로 목록을 변경 합니다. 또한 목록이 아닌 항목을 사용 합니다. 따라서 필요한 것은
for i in range(n):
list1.append(i)
(참고 range(n)
로이 경우를 사용할 수 있습니다 .)
실제 사용이 더 복잡하다고 가정하지만 목록 이해력을 사용할 수 있으며 이는 이에 대해 더 비단뱀 적입니다.
list1 = [i for i in range(n)]
또는이 경우 Python 2.x range(n)
에서는 실제로 원하는 목록을 생성하지만 Python 3.x에서는 list(range(n))
.
할당 연산자가 필요하지 않습니다. append는 None을 반환합니다.
append
None을 반환하므로 두 번째 반복 append
에서 NoneType의 메서드 를 호출 합니다. 할당을 제거하기 만하면됩니다.
for i in range(0, n):
list1.append([i])
Mikola는 정답이 있지만 설명이 조금 더 있습니다. 처음으로 실행되지만 append가을 반환하기 때문에 None
for 루프의 첫 번째 반복 후에 할당이 list1
동일하게 None
되므로 두 번째 반복에서 오류가 발생합니다.
나는 개인적으로 다음 +
보다 연산자를 선호합니다 append
.
for i in range(0, n):
list1 += [[i]]
그러나 이것은 매번 새로운 목록을 생성하므로 성능이 중요하다면 최고가 아닐 수도 있습니다.
Mikola가 말했듯 append()
이 void를 반환하므로 append가 nonetype을 반환하기 때문에 모든 반복에서 list1을 nonetype으로 설정합니다. 다음 반복에서 list1은 null이므로 null의 append 메서드를 호출하려고합니다. Null에는 메서드가 없으므로 오류가 발생합니다.
목록 내에서 필요한 위치에 숫자를 입력하기 위해 insert를 사용할 수도 있습니다.
initList = [1,2,3,4,5]
initList.insert(2, 10) # insert(pos, val) => initList = [1,2,10,3,4,5]
또한 파이썬에서는 len () 메소드를 사용하여 항상 목록 길이를 얻을 수 있습니다.
my_list.append (...)를 사용하고 목록은 변경 가능하므로 추가 할 다른 목록은 사용하지 마십시오.
참고 URL : https://stackoverflow.com/questions/6339235/how-to-append-to-the-end-of-an-empty-list
'program tip' 카테고리의 다른 글
문자열을 변수와 어떻게 연결합니까? (0) | 2020.11.21 |
---|---|
테이블에 열을 추가 한 다음 트랜잭션 내에서 업데이트합니다. (0) | 2020.11.21 |
수면 종류의 시간 복잡성은 무엇입니까? (0) | 2020.11.21 |
Haskell : non-strict와 lazy는 어떻게 다른가요? (0) | 2020.11.21 |
Swift에서 대문자 "Self"와 소문자 "self"의 구별 (0) | 2020.11.21 |