2011-09-16 3 views
0

를 추가이 난 그냥 파이썬 쉘에서 한 것입니다 :파이썬 쉘이 시도 : list.extend/

>>>l = [1, 2] 
>>>l 
...[1, 2] 
>>>m = [1, 2].extend([2, 3]) 
>>>m      #pressed Enter, nothing came out 
>>>m is None 
...True 

이유 :

>>>[1, 2] 
...[1, 2] 
>>>[1, 2].extend([2,3]) #when I pressed Enter 
>>> 

       #nothing came out 

가 나는 다른 무언가를 시도? 그럴 수 없다는 것을 의미합니까?

>>>m = [...].extend(...) 

?

+1

list.extend는 ** ** 해당 위치에서 목록을 수정합니다. – jsz

+0

변경 가능한 개체가 ** ** 수정 된 경우 해당 함수의 반환 값은 없음입니다. 새로운 대상이 아닙니다. –

답변

5

아니요, extend (append, pop ...)으로 아무 것도 반환하지 않고 개체를 수정합니다.

목록 개체는 변경 가능한 개체이므로 개체를 다시 만들 필요없이 수정할 수 있습니다. 귀하의 경우에는

, 당신은

같은의 반환 값으로 무엇을 기대, 당신의이 class Foo을 부르 자, l의 유형을 변경이 또 다른 목적은 가정하면

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

을 할 필요가

foo = Foo() 
foo.modify_object("here are modifications") 

foo 개체가 수정 된 것으로 예상되지 않으므로이 메서드에서 아무 것도 반환되지 않습니까?

+0

하지만 왜 "m = [1,2] .extend ([1])"라고 쓰고 나서 m은 None입니까? – Alcott

+0

그것이'extend'가 반환하는 것이기 때문입니다. –

+0

@Alcott : 목록 이외의 다른 것으로 예제를 추가합니다. –

2

항상 m = [...] + [...]을 사용할 수 있습니다.

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

거의 모든 목록 작업 장소, 예를 들어,의 목록 을 수정

>>> m = [1, 2, 5, 6, 7, 1, 2, 4] 
>>> m.sort() 
>>> m 
[1, 1, 2, 2, 4, 5, 6, 7] 
관련 문제