python 초기화 입력 - 파이썬에서 append와 extend리스트 메소드의 차이점





12 Answers

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

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

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

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

>>> 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']

다이브에서 파이썬으로 .

자르기 합치기 더하기

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




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

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

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



append () 메서드는 단일 항목을 목록의 끝에 추가합니다.

x = [1, 2, 3]
x.append([4, 5])
x.append('abc')
print(x)
# gives you
[1, 2, 3, [4, 5], 'abc']

extend () 메소드는 하나의 인수 인 목록을 취하여 인수의 각 항목을 원래 목록에 추가합니다. (목록은 클래스로 구현됩니다. "목록 만들기"는 실제로 클래스를 인스턴스화합니다. 따라서 목록에는이를 조작하는 메서드가 있습니다.)

x = [1, 2, 3]
x.extend([4, 5])
x.extend('abc')
print(x)
# gives you
[1, 2, 3, 4, 5, 'a', 'b', 'c']

Python으로 다이브 에서.




추가 대 확장

append를 사용하면 목록을 확장 할 단일 요소를 추가 할 수 있습니다.

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

하나 이상의 요소를 확장하려면 하나의 엘멘먼트 또는 하나의 요소 목록 만 추가 할 수 있기 때문에 extend를 사용해야합니다.

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

당신이 중첩 된리스트를 얻도록

확장과 함께 이처럼 단일 요소를 확장 할 수 있습니다.

>>> a = [1,2]
>>> a.extend([3])
>>> a
[1,2,3]

또는 append와 달리 목록을 원래 목록에 중첩하지 않고 한 번에 더 많은 요소를 확장합니다 (이름 확장의 이유 임)

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

두 가지 방법으로 하나의 요소 추가하기

요소 하나 추가

>>> x = [1,2]
>>> x.append(3)
>>> x
[1,2,3]

하나의 요소를 확장하다

>>> x = [1,2]
>>> x.extend([3])
>>> x
[1,2,3,4]

다른 결과로 더 많은 요소 추가 ...

둘 이상의 요소에 대해 append를 사용하면 인수 목록에 요소 목록을 전달해야하며 중첩 목록을 가져옵니다.

>>> x = [1,2]
>>> x.append([3,4])
>>> x
[1,2,[3,4]]

extend를 사용하면 목록을 인수로 전달하지만 이전 요소에 중첩되지 않은 새 요소로 목록을 가져옵니다.

>>> z = [1,2] 
>>> z.extend([3,4])
>>> z
[1,2,3,4]

따라서 더 많은 요소가 있으면 extend를 사용하여 더 많은 항목으로 목록을 가져옵니다. append를 사용하여 더 이상 요소를 목록에 추가하지 않고 코드 결과에서 명확하게 볼 수있는 중첩 목록 인 요소 하나를 사용합니다.




extend() 는 반복자 인수와 함께 사용할 수 있습니다. 다음은 그 예입니다. 이 방법으로 목록 목록에서 목록을 만들고 싶습니다.

에서

list2d = [[1,2,3],[4,5,6], [7], [8,9]]

너는 원한다.

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

그렇게하려면 itertools.chain.from_iterable() 을 사용할 수 있습니다. 이 메소드의 출력은 반복자입니다. 구현은 다음과 같습니다.

def from_iterable(iterables):
    # chain.from_iterable(['ABC', 'DEF']) --> A B C D E F
    for it in iterables:
        for element in it:
            yield element

예제를 통해 우리는 할 수 있습니다.

import itertools
list2d = [[1,2,3],[4,5,6], [7], [8,9]]
merged = list(itertools.chain.from_iterable(list2d))

원하는 목록을 얻으십시오.

다음은 iterator 인수와 동등하게 extend() 사용할 수있는 방법입니다.

merged = []
merged.extend(itertools.chain.from_iterable(list2d))
print(merged)
>>>
[1, 2, 3, 4, 5, 6, 7, 8, 9]



append () : 기본적으로 하나의 요소를 추가하기 위해 파이썬에서 사용됩니다.

예제 1 :

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

예 2 :

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

extend () : 두 개의 목록을 병합하거나 하나의 목록에 여러 요소를 삽입하는 데 extend ()를 사용합니다.

예제 1 :

>> a = [1, 2, 3, 4]
>> b = [5, 6, 7, 8]
>> a.extend(b)
>> print(a)
>> a = [1, 2, 3, 4, 5, 6, 7, 8]

예 2 :

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



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

예를 들어

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

append 우리는 얻는다 :

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

extend 동안 우리는 얻는다 :

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



나는이 질문에 도움이 될 수 있기를 바랍니다. 목록에 특정 유형의 객체 (예 : Info )가 저장되어있는 경우 extend 메소드가 적합하지 않은 상황이 extend . for 루프에서 매번 Info 객체를 생성하고 extend 를 사용하여 목록에 저장하면 실패합니다. 예외는 다음과 같습니다.

TypeError : 'Info'개체를 반복 할 수 없습니다.

그러나 append 메서드를 사용하면 결과가 정상입니다. extend 메서드를 사용할 때마다 항상 목록 또는 다른 컬렉션 유형으로 처리하고 반복하고 이전 목록 뒤에 배치합니다. 분명히 특정 객체는 반복 될 수 없습니다.




"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 할 때 실제로 일어나는 일을 이해하는 데 도움이되었습니다 :

a = [[1,2,3],[4,5,6]]
print(a)
>>> [[1, 2, 3], [4, 5, 6]]
a.append([6,7,8])
print(a)
>>> [[1, 2, 3], [4, 5, 6], [6, 7, 8]]
a.extend([0,1,2])
print(a)
>>> [[1, 2, 3], [4, 5, 6], [6, 7, 8], 0, 1, 2]
a=a+[8,9,10]
print(a)
>>> [[1, 2, 3], [4, 5, 6], [6, 7, 8], 0, 1, 2, 8, 9, 10]



( 하나의 항목만으로 ) 목록을 (그 위치에) " append "하고, 하나의 객체는 (인수로) 전달됩니다.

인수로 전달 된 객체 만큼 많은 항목에 의해 목록을 확장합니다.

이것은 str 객체에 대해 약간 혼란 스러울 수 있습니다.

  1. 문자열을 인수로 전달하면 append 는 끝에 단일 문자열 항목을 추가하지만 extend 은 해당 문자열의 길이만큼 "단일" 'str'항목을 추가합니다.
  2. 인수로 문자열 목록을 전달하면 append 는 끝에 'list'항목 하나를 추가하고 extend 는 전달 된 목록의 길이만큼 'list'항목을 추가합니다.
def append_o(a_list, element):
    a_list.append(element)
    print('append:', end = ' ')
    for item in a_list:
        print(item, end = ',')
    print()

def extend_o(a_list, element):
    a_list.extend(element)
    print('extend:', end = ' ')
    for item in a_list:
        print(item, end = ',')
    print()
append_o(['ab'],'cd')

extend_o(['ab'],'cd')
append_o(['ab'],['cd', 'ef'])
extend_o(['ab'],['cd', 'ef'])
append_o(['ab'],['cd'])
extend_o(['ab'],['cd'])

생산 :

append: ab,cd,
extend: ab,c,d,
append: ab,['cd', 'ef'],
extend: ab,cd,ef,
append: ab,['cd'],
extend: ab,cd,



append () 메소드는 전달 된 인수를 단일 요소로 추가합니다.

extend () 는 전달 된 인수를 반복하고 반복되는 각 요소를 전달하여 목록을 확장합니다. 기본적으로 전체를 하나가 아닌 여러 요소가 추가됩니다.

list1 = [1,2,3,4,5]
list2 = [6,7,8]

list1.append(list2)
print(list1)
#[1,2,3,4,5,[6,7,8]]

list1.extend(list2)
print(list1)
#[1,2,3,4,5,6,7,8]



Related