[python] 파이썬에서 append와 extend리스트 메소드의 차이점



Answers

append 는 목록에 요소를 추가하고 extend 는 첫 번째 목록을 다른 목록 (또는 목록이 아닌 다른 iterable)과 연결합니다.

>>> li = ['a', 'b', 'mpilgrim', 'z', 'example']
>>> li
['a', 'b', 'mpilgrim', 'z', 'example']

>>> li.append("new")               
>>> li
['a', 'b', 'mpilgrim', 'z', 'example', 'new']

>>> li.insert(2, "new")            
>>> li
['a', 'b', 'new', 'mpilgrim', 'z', 'example', 'new']

>>> li.extend(["two", "elements"]) 
>>> li
['a', 'b', 'new', 'mpilgrim', 'z', 'example', 'new', 'two', 'elements']

다이브에서 파이썬으로 .

Question

목록 메소드 append()extend() 의 차이점은 무엇입니까?




암시되었지만 설명되지 않은 재미있는 점은 추가가 더 빠릅니다. 내부에 추가 된 루프는 list.extend (processed_elements)로 대체되어야합니다.

새로운 요소를 추가하면 전체 목록이 메모리의 더 나은 위치로 다시 연결될 수 있음을 명심하십시오. 한 번에 1 요소 씩 추가하기 때문에 여러 번 수행하면 전반적인 성능이 저하됩니다. 이러한 의미에서 list.extend는 .join (stringlist)과 유사합니다.




영어 사전은 append 단어를 정의하고 다음과 같이 extend 됩니다.

append : 문서의 끝에 추가 (무언가).
확장 : 더 크게 만듭니다. 확대 또는 확장

그 지식으로 이제는

1) appendextend 차이

append :

  • 모든 파이썬 객체를있는 그대로 (즉,리스트의 마지막 요소로서)리스트의 끝에 추가 합니다 .
  • 결과 목록은 중첩 될 수 있고 이기종 요소 (예 : 목록, 문자열, 튜플, 사전, 집합 등)를 포함 할 수 있습니다.

extend :

  • 인수로 반복 가능한 모든 것을 받아들이고 목록을 더 크게 만듭니다.
  • 결과 목록은 항상 하나의 차원 목록 (즉, 중첩 없음)이며 list(iterable) 을 적용한 결과로 이질 요소 (예 : 문자, 정수, 부동 소수점 list(iterable)

2) appendextend 유사성

  • 둘 다 정확히 하나의 인수를 취합니다.
  • 둘 다 목록 을 현재 위치에서 수정합니다.
  • 결과적으로 두 가지 모두 반환합니다.

lis = [1, 2, 3]

# extend is equivalent to this
lis = lis + list(iterable)

# append simply appends its argument as the last element to the list
# as long as the argument is a valid Python object
lis.append(object)



extend(L) 주어진리스트 L의 모든 항목을 추가하여 목록을 확장합니다.

 >>> a
[1, 2, 3]
a.extend([4]) # it is equivalent to a[len(a):] = [4] or a.append(4)
 >>>a
[1, 2, 3, 4]
 >>> a = [1
 >>> a
[1, 2, 3]
 >>> a[len(a)] = [4]
 >>> a
[1, 2, 3, 4]



"append"메소드는 매개 변수를 단일 요소 로 목록에 추가하는 반면, "extend"는 목록을 가져 와서 해당 내용을 추가합니다.

예를 들어,

넓히다

    letters = ['a', 'b']  
    letters.extend(['c', 'd'])   
    print(letters)   # ['a', 'b', 'c', 'd']

추가하다

    letters.append(['e', 'f'])   
    print(letters)    # ['a', 'b', 'c', 'd', ['e', 'f']]



Append는 전체 데이터를 한 번에 추가합니다. 새로 생성 된 색인에 전체 데이터가 추가됩니다. 반면에, extend 는 이름에서 알 수 있듯이 현재 배열을 확장합니다.

예를 들어

list1 = [123, 456, 678]
list2 = [111, 222]

append 우리는 얻는다 :

result = [123, 456, 678, [111, 222]]

extend 동안 우리는 얻는다 :

result = [123, 456, 678, 111, 222]



append (object) - 목록에 객체를 추가하여 목록을 업데이트합니다.

x = [20]
# list passed to the append(object) method is treated as a single object.
x.append([21,22,23]) 
#hence the resultant list length will be 2
print x 
--> [20, [21,22,23]]

extend (list) - 본질적으로 2 개의리스트를 연결합니다.

x = [20]
#the parameter passed to extend(list) method is treated as a list.
#eventually it is 2 list's being concatenated. 
x.extend([21,22,23])
#here the resultant list's length is 4
print x 
[20,21,22,23]



이것은 append 와 동일하고 + 연산자를 사용하여 extend 합니다.

>>> x = [1,2,3]
>>> x
[1, 2, 3]
>>> x = x + [4,5,6] # Extend
>>> x
[1, 2, 3, 4, 5, 6]
>>> x = x + [[7,8]] # Append
>>> x
[1, 2, 3, 4, 5, 6, [7, 8]]



append 는 단일 요소를 추가합니다. extend 는 요소 목록을 추가합니다.

추가 할 목록을 전달하면 여전히 요소 하나가 추가됩니다.

>>> a = [1, 2, 3]
>>> a.append([4, 5, 6])
>>> a
[1, 2, 3, [4, 5, 6]]



확장 기능 대신 확장 기능을 사용하려면 "+"를 사용할 수 있습니다.

l1=range(10)

l1+[11]

[0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 11]

l2=range(10,1,-1)

l1+l2

[0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 9, 8, 7, 6, 5, 4, 3, 2]

비슷하게 += in place 동작이지만 append & extend 와는 약간의 차이가 extend . appendextend 에서 += 의 가장 큰 차이점 중 하나는 기능 범위에서 사용되는 경우입니다. 이 블로그 게시물을 참조하십시오.




Related