program tip

빈 목록 끝에 추가하는 방법은 무엇입니까?

radiobox 2020. 11. 21. 14:17
반응형

빈 목록 끝에 추가하는 방법은 무엇입니까?


목록이 있습니다.

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을 반환합니다.


appendNone을 반환하므로 두 번째 반복 append에서 NoneType의 메서드 호출 합니다. 할당을 제거하기 만하면됩니다.

for i in range(0, n):
    list1.append([i])

Mikola는 정답이 있지만 설명이 조금 더 있습니다. 처음으로 실행되지만 append가을 반환하기 때문에 Nonefor 루프의 첫 번째 반복 후에 할당이 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

반응형