그래서 백업이었습니다 객체에는 바뀌엇어요 점에 유의하십시오. 첫 번째 목록 될 경우, 다른 목록 관용으로충만하신 덮어쓰기/추가 바뀌엇어요 끝에 단일 객체에는 목록 (업데이트되지 않은 그리웠댔지):
>>> another_list = [1, 2, 3]
>>> my_list.append(another_list)
>>> my_list
['foo', 'bar', 'baz', [1, 2, 3]]
#^^^^^^^^^--- single item at the end of the list.
'확장'
이 '방법' 에서 요소를 추가하여 연장시킵니다 리스트리에스테드 바뀌엇어요 이트레이블:
my_list.extend(iterable)
그리고 확장, 각 요소에 이트레이블 관용으로충만하신 명단요) 가 된다 예를 들면 다음과 같습니다.
이에 대해 모두 '+' 와 '+' = '정의됩니까 목록'. 이들은 의미상 유사한 확장하십시오.
'+' 는 3 목록에 my_list another_list tufts. 반품해야 수 있도록 그 두 번째 이트레이블 바뀌엇어요 수 있지만 합니다.
'my_list + = another_list 수정되므로 목록에' 현재 위치 (it 는 현재 위치 변경 가능 객체에는 we& 것처럼 운영자, 목록은 # 39, ve seen) 때문에 새로운 목록을 만들 수 없습니다. 또한 두 번째 이트레이블 확장할 수 있는 모든 종류의 이트레이블 마찬가지로 작동합니다.
39 더 my_list another_list '-' t get, don& my_list + = + = '-' 에 해당하는 것은 이를 통해 너희에의 brand new list 대입된 my_list.
'반복' 를 통해 다수의 호출이 덮어쓰기/추가 복잡성입니다 자도으로 있기 때문에 이를 통해 avamer extend& 구현되어 있으며, 이 때문에, C # 39 의 이터레이션에 확장하십시오 항상 빠른 계획인 경우에는 덮어쓰기/추가 이트레이블 에서 연속 항목에서와 관용으로충만하신 바뀌엇어요.
성능
이후, 더 강력한 너회가 밥값으로 지정하십시오. 같은 결과를 얻을 수 있도록 확장하십시오 덮어쓰기/추가 사용할 수 있다. 다음과 같은 기능을 책임질래 마찬가지입니다.
def append(alist, iterable):
for item in iterable:
alist.append(item)
def extend(alist, iterable):
alist.extend(iterable)
의미적으로 올바른 일을 수행합니다. 모든 요소에 첨부하려는 이트레이블 사용할 경우, '확장'. # 39 한 사용할 경우, 추가 요소를 you& re 그냥 '덮어쓰기/추가'.
좋아, 그럼 어떻게 이 작품을 볼 수 있는 실험 let& # 39 의 생성하시겠습니까 아웃해야 시간:
def append_one(a_list, element):
a_list.append(element)
def extend_one(a_list, element):
"""creating a new list is semantically the most direct
way to create an iterable to give to extend"""
a_list.extend([element])
import timeit
하나님은 우리의 나가는 것을 볼 수 있는 방법을 사용하여 (부) 는 이트레이블 생성하시겠습니까 확장하십시오 그냥 시간 낭비.
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]]
확장 (목록) '-' 연결 기본적으로 두 가지 있습니다.
x = [20]
# The parameter passed to extend(list) method is treated as a list.
# Eventually it is two lists being concatenated.
x.extend([21, 22, 23])
# Here the resultant list's length is 4
print(x)
[20, 21, 22, 23]
흥미로운 점을 시사한 게 아니라 그동안 도래하도록하려하는 확장하십시오 보다 덮어쓰기/추가 있다. 모든 루프 내부에 있는 덮어쓰기/추가 고려해야 합니다 교체 리스트리에스테드 (processed_elements).
새로운 요소를 이어질 수 있다는 것을 명심해야 아프렌딩 릴로스션 전체 목록을 더 좋은 위치에 메모리. 이 경우 한 번에 여러 차례 1 요소 추가 완료되어도 있기 때문에 전반적인 성능이 낮은. 그런 의미에서, " 스타인 (스트린그리스트), " 리스트리에스테드 비슷합니다.
있는 그대로 - 모든 파이썬 객체에는 첨부됩니다 목록 끝까지 (즉 비호환성의
마지막 요소에 목록).
결과 리스트가 네스트된 및 컨테인먼트하는 이기종에서 요소 (즉, 목록, 문자열, 튜플, 사전, set, etc.)
'확장' *:
모든 대규모 인수 하면 그 목록에 이트레이블 받아들입니다.
결과 목록은 항상 일차원 목록 (즉, 아니 중첩하기) 와 요소 (예를 들어, 문자, 정수, 부동) 이 포함되어 있을 이기종에서 적용한 결과로 '목록 (이트레이블)'.
유사성을 '덮어쓰기/추가' 와 '확장' *
두 시행하십시오 정확히 하나의 이름이다.
두 수정하십시오 목록 내부 .
따라서, 되돌려줍니다 '없음'.
예 *
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
list.append(object)
이 질문에 보완할 수 있는 유용한 내말들어봐 내가 됐으면 좋겠다 "고 말했다. 예를 들어 '정보' 는 특정 유형에 객체에는 나열하십시오 경우, 여기에 있는 상황에서 '확장' 적절한 방법을 사용할 수 없습니다. 그리고 '정보' 의 '는' 루프 생성 및 사용 '확장' 으로, 그 때마다 객체에는 저장하였습니다 목록에 페일오버됩니다. 예외적으로 그것을비유하사 다음과 같습니다.
['덮어쓰기/추가'] [1]: 마지막에 첨부됩니다 객체에는.
알 수 있습니다. ' [1, 2, 3, [4, 5]]'
['확장'] [1]: 이 이트레이블 요소를 추가하여 연장시킵니다 목록.
알 수 있습니다. ' [1, 2, 3, 4, 5]'
[1]: https://docs.python.org/3/library/stdtypes.html # e0100042.log 유형 변경 가능
'수' 와 ',' 첫 번째 요소에 자도으로 덮어쓰기/추가 바뀌엇어요 확장하십시오 연결 list 를 다른 목록 (또는 다른 이트레이블 바뀌엇어요, 꼭 그렇지만은 않은 것 같다.)
>. # 덮어쓰기/추가 및 확장 메서드를 목록에 차이가 뭘까?
'-' 는 주장을 끝까지 덮어쓰기/추가 자도으로 한 요소 목록. 목록 자체가 하나의 길이가 늘어날 전망이다. '-' 그 동안 각 요소를 추가 인수를 통해 가져온 목록에 명단요 확장 그러나 많은 요소를 이트레이블 인수 목록에서 디스테이징하는 증가할 것으로 믿고 있었다.
'덮어쓰기/추가'
'말' 이 방법은 객체를 명단요 리스트리아펜드 첨부됩니다.
객체인지, 서버인지에 번호, 문자열, 리스트, 또는 어떤 다른 it gets the end of something else, 또 하나의 항목에 대한 명단요 관용으로충만하신 my_list '으로'
그래서 백업이었습니다 객체에는 바뀌엇어요 점에 유의하십시오. 첫 번째 목록 될 경우, 다른 목록 관용으로충만하신 덮어쓰기/추가 바뀌엇어요 끝에 단일 객체에는 목록 (업데이트되지 않은 그리웠댔지):
'확장'
이 '방법' 에서 요소를 추가하여 연장시킵니다 리스트리에스테드 바뀌엇어요 이트레이블:
그리고 확장, 각 요소에 이트레이블 관용으로충만하신 명단요) 가 된다 예를 들면 다음과 같습니다.
있다는 점을 유념해야 구체화하십시오 백업이었습니다 이트레이블 도왔으매 확장한 경우, 각 문자를 함께 바뀌엇어요 you& # 39, ll 덮어쓰기/추가 반복할 때 문자열을 string (업데이트되지 않은 그리웠댔지):
작동자 오버로드할 ' (' + ') 과', 'add iadd' ('+ =')
이에 대해 모두 '+' 와 '+' = '정의됩니까 목록'. 이들은 의미상 유사한 확장하십시오.
'+' 는 3 목록에 my_list another_list tufts. 반품해야 수 있도록 그 두 번째 이트레이블 바뀌엇어요 수 있지만 합니다.
'my_list + = another_list 수정되므로 목록에' 현재 위치 (it 는 현재 위치 변경 가능 객체에는 we& 것처럼 운영자, 목록은 # 39, ve seen) 때문에 새로운 목록을 만들 수 없습니다. 또한 두 번째 이트레이블 확장할 수 있는 모든 종류의 이트레이블 마찬가지로 작동합니다.
39 더 my_list another_list '-' t get, don& my_list + = + = '-' 에 해당하는 것은 이를 통해 너희에의 brand new list 대입된 my_list.
시간 복잡도
덮어쓰기/추가 있는 상수입니다 시간 복잡도, O (1).
시간 복잡도, O (k) 을 확장할 수 있다.
'반복' 를 통해 다수의 호출이 덮어쓰기/추가 복잡성입니다 자도으로 있기 때문에 이를 통해 avamer extend& 구현되어 있으며, 이 때문에, C # 39 의 이터레이션에 확장하십시오 항상 빠른 계획인 경우에는 덮어쓰기/추가 이트레이블 에서 연속 항목에서와 관용으로충만하신 바뀌엇어요.
성능
이후, 더 강력한 너회가 밥값으로 지정하십시오. 같은 결과를 얻을 수 있도록 확장하십시오 덮어쓰기/추가 사용할 수 있다. 다음과 같은 기능을 책임질래 마찬가지입니다.
그래서 let& # 39, 그 때이다.
주소지정에 셀명 켜짐이 타이밍
의견 제시 한 것 "이라고 말했다.
>. 야, 내가 그냥 하나만 추가하면 완벽한 타이밍을 놓치지 요소점 비교
의미적으로 올바른 일을 수행합니다. 모든 요소에 첨부하려는 이트레이블 사용할 경우, '확장'. # 39 한 사용할 경우, 추가 요소를 you& re 그냥 '덮어쓰기/추가'.
좋아, 그럼 어떻게 이 작품을 볼 수 있는 실험 let& # 39 의 생성하시겠습니까 아웃해야 시간:
하나님은 우리의 나가는 것을 볼 수 있는 방법을 사용하여 (부) 는 이트레이블 생성하시겠습니까 확장하십시오 그냥 시간 낭비.
배울 수 있는 '확장' 을 사용하여 얻은 아무것도아니야 there& # 39 이 때 우리는 한 만 요소점 첨부하려면.
또한 이 타이밍 있지 않은 중요하다. 나는 그냥 올바른 일을 할 수 있다는 점을 보여 주는 의미 있는 일을 하도록 하는, 파이썬, 이 일에 오른쪽 Way™ 하고 있다.
39 의 it& 나타날 수 있는 가능성도 있는 두 개의 비슷한 운영 및 프레젠테이션이든 애매한 또는 보색으로 타이밍 테스트 결과. 그냥 초점을 맞출 수행하는 의미적으로 올바른 일이다.
결론
우리가 지켜보리니 확장할 수 있다는 의미 있는 것보다 훨씬 빨리, 그리고 '는' 보다 ',' 덮어쓰기/추가 실행하십시오 때 각 요소에 대한 생각이 있는 이트레이블 list. 첨부하려면
하나만 있을 경우 요소 (아닌 이트레이블) ',' 덮어쓰기/추가 사용하여 목록에 추가합니다.
'첨부됩니다 덮어쓰기/추가' 단일 요소. '확장' 바뀌엇어요 첨부됩니다 요소.
참고로 바뀌엇어요 첨부하려면 자도으로 전달하는 경우, 여전히 한 요소:
스니핏 avamer 다음과 같은 두 가지 의미 있다.
및
후자의 루프 (loop) 로 구현되어 있으며 c. 속도가 더 빨라질 수 있습니다
>. < h1>; 덮어쓰기/추가 vs Extend< /h1>; ! [입력하십시오. 이미지 여기에 설명을] [1]
목록에 있는 각 요소를 덧붙일 수 있습니다 함께 덮어쓰기/추가 확대해 나갈 예정이다.
스케쳐내 확대할 수 있기 때문에, 1 만 이상의 요소점 콩지름에 확장하십시오 덮어쓰기/추가 엘망 또는 원-부트 목록니다 요소:
얻을 수 있도록 네스트된 목록
이렇게 하나의 원소로 확장하십시오 대신 확장할 수 있습니다
또는, 다른 한 시간 더 많은 요소가 충스러웠으니 덮어쓰기/추가, 확장 없이 목록에 이름을 원래 중첩할 분할합니다 (that& # 39 의 이유도 이름 확장)
< h1>; 하나의 요소를 모두 갖춘 추가 methods< /h1>; ! [입력하십시오. 이미지 여기에 설명을] [2]
< h2>; 덮어쓰기/추가 1 요소점 < /h2>;
< h2>; 하나의 요소가 확장하십시오 < /h2>;
> < h1>;; 추가 요소를. 다른 결과를 통해 < /h1>;
둘 이상의 요소를 덮어쓰기/추가 사용하는 경우, 당신은 인수로 전달할 수 있을 것이라고 네스트된 바뀌엇어요 진실이며당신이 요소 목록!
대신 확장하십시오 함께 전달했는지 바뀌엇어요 확장하지만 인수로 새로운 요소를 함께 바뀌엇어요 않는 한 네스트된 옛날 받습니다.
그래서 더욱 더욱 확장할 수 있는 요소 목록 항목을 사용할 수 있습니다. 하지만 한 가지 더 사용할 수 없는 요소 요소에 덮어쓰기/추가 덮어쓰기/추가 목록에 또렷하게 볼 수 있듯이 네스트된 나열하십시오 출력에 코드.
! [입력하십시오. 이미지 여기에 설명을] [3]
! [입력하십시오. 이미지 여기에 설명을] [4]
'방법' 덮어쓰기/추가 () 는 단일 항목을 자도으로 끝까지 명단요
'이' 확장 () 는 하나의 방법, 그리고 각 항목을 첨부됩니다 바뀌엇어요 인수, 기존 인수 목록. (열거합니다 클래스뿐만 구현됩니다. "생성" 는 정말 인스턴스화하며 바뀌엇어요 클래스. 이와 같이 바뀌엇어요 diskid 메서드입니다 작동합니까 때문이다.)
[1]: http://www.amazon.com/dive-into-python-books-professionals/dp/? 키드 = 1430224150, 1383225052, sr = = = ie /ref sr_1_2 utf8& & 여러_키워드 = dive% 20into% 20python 8-2&.
&Quot +", 사용할 수 있습니다. 대신 확장 확장하십시오 자리에 들었다.
마찬가지로 '+ =' 에서 ',' 약간 다르게 덮어쓰기/추가 & 배치하십시오 비헤이비어를 갖추고 있지만, '확장'. 가장 큰 차이점을 보이는 '+' 와 '=' 에서 '가 사용되고 있을 때 추가 확장 기능을 범위, 지켜보리니 [이 블로그 포스트] [1].
[1]: = = = zeef.com, https://www.toptal.com/python/top-10-mistakes-that-python-programmers-make, utm_source & utm_campaign 제프 referral& utm_medium?
'-' 덮어쓰기/추가 업데이트 목록에 추가하여 명단요 객체 (object)
확장 (목록) '-' 연결 기본적으로 두 가지 있습니다.
'확장 ()' 에서 사용할 수 있는 반복자가 인수. 예를 들어보겠습니다. 이렇게 열거합니다 아웃해야 프로파일링하려는 바뀌엇어요 목록을 만들 수 있습니다.
에서
운영까지도
' ()' 을 승인하십시오 itertools.chain.from_iterable 사용할 수 있습니다. # 39 의 출력입니다 이 method& 백업이었습니다 반복자가. 그 구축상의 같습니다
예를 들어, 우리가 할 수 있는 우리의 뒤로를
및 내려받습니다 지명수배했다.
다음은 확장 () '' 어떻게 사용할 수 있는 반복자가 주장을 가리킨다.
이는 '에' 덮어쓰기/추가 '와' 확장 '+' 사용하여 작동자:
>. 사례 1:
>. 예 2:
>. 사례 1:
>. 예 2:
한 번에 전체 데이터 덮어쓰기/추가 추가하므로. 모든 데이터는 추가되도록 새로 만든 색인입니다. 반면 '확장' 에 이름이 암시하듯이 연장시킵니다 현재 어레이입니다.
예를 들어
덮어쓰기/추가 '와' we get.
반면 '확장' we get.
흥미로운 점을 시사한 게 아니라 그동안 도래하도록하려하는 확장하십시오 보다 덮어쓰기/추가 있다. 모든 루프 내부에 있는 덮어쓰기/추가 고려해야 합니다 교체 리스트리에스테드 (processed_elements).
새로운 요소를 이어질 수 있다는 것을 명심해야 아프렌딩 릴로스션 전체 목록을 더 좋은 위치에 메모리. 이 경우 한 번에 여러 차례 1 요소 추가 완료되어도 있기 때문에 전반적인 성능이 낮은. 그런 의미에서, " 스타인 (스트린그리스트), " 리스트리에스테드 비슷합니다.
영어 단어 '와' 확장 '사전' 덮어쓰기/추가 eventtest 있다.
39 의 이해할 수 있는 지식, 이제 let&
있는 그대로 - 모든 파이썬 객체에는 첨부됩니다 목록 끝까지 (즉 비호환성의 마지막 요소에 목록).
두 시행하십시오 정확히 하나의 이름이다.
두 수정하십시오 목록 내부 .
따라서, 되돌려줍니다 '없음'.
이 질문에 보완할 수 있는 유용한 내말들어봐 내가 됐으면 좋겠다 "고 말했다. 예를 들어 '정보' 는 특정 유형에 객체에는 나열하십시오 경우, 여기에 있는 상황에서 '확장' 적절한 방법을 사용할 수 없습니다. 그리고 '정보' 의 '는' 루프 생성 및 사용 '확장' 으로, 그 때마다 객체에는 저장하였습니다 목록에 페일오버됩니다. 예외적으로 그것을비유하사 다음과 같습니다.
>. TypeError: # 39, & # 39 Info&. 객체에는 이트레이블 않습니다.
하지만 '방법을 사용할 경우, 그 결과' OK '덮어쓰기/추가 때마다 이를 치료하는 방법을 사용하여 확장하십시오' 때문에 항상 이를 다른 유형, 반복 후 배치하십시오 목록이거나 취합은 정보기술 (it), 이전 목록. 물론, 특정 객체에는 이터레이션된 수 없습니다.
직관적으로 구분할 수
39, l1 's like' it& 재현하는 발견되었지 몸 (네스트된).
39 의 it& 그렇게 결혼을 한 두 개인 및 미국 가족이었지 분판된 chunghwa
게다가 난 전체 컨닝 지 만드는 모든 list& # 39 의 메서드을 단축시킵니다 참조입니다.
확장 (L) '' 목록에 있는 모든 항목을 추가하여 연장시킵니다 지정된 목록 'L'.
',' 덮어쓰기/추가 " extends". , 전용 목록 (위) 에 한 항목씩 단일 전달되는 객체 (인수로).
'확장' " extends"; 객체에는 있다 (위) 에 많은 항목을 목록을 (인수로) 에 통과시켰다.
올해 5월 약간 혼란스럽다 "에 대한 '객체에는 str.
39, & # 39 list& 덮어쓰기/추가 '는 여전히' 단일 추가. 항목설명프로세서 끝에 있고
39, & # 39 '확장' 가 많은 추가 list&. 같은 길이의 목록 항목을 통과시켰다.
>. 데프 append_o (a_list, 요소): >. a_list.append (원소) >. 보기인쇄 (& # 39, & # 39 끝 = append:& # 39;; & # 39;) >. 항목에 대한 a_list: >. 보기인쇄 (& # 39, & # 39 항목설명프로세서, 끝 =;;) >. 보기인쇄 () >. >. 데프 extend_o (a_list, 요소): >. a_list.extend (원소) >. 보기인쇄 (& # 39, & # 39 끝 = extend:& # 39;; & # 39;) >. 항목에 대한 a_list: >. 보기인쇄 (& # 39, & # 39 항목설명프로세서, 끝 =;;) >. 보기인쇄 () >. append_o ([& # 39, ab& # 39;] # 39, & # 39 cd&;;) >. >. extend_o ([& # 39, ab& # 39;] # 39, & # 39 cd&;;) >. append_o ([& # 39, ab& # 39,], [& # 39, & # 39 ef& cd& # 39,, # 39,]) >. extend_o ([& # 39, ab& # 39,], [& # 39, & # 39 ef& cd& # 39,, # 39,]) >. append_o ([& # 39, ab& # 39,], [# 39, & # 39, cd&]) >. extend_o ([& # 39, ab& # 39,], [# 39, & # 39, cd&])
생산한다.
덮어쓰기/추가 및 확대 중 하나가 아닌 메커니즘을 갖는 파이썬.
덮어쓰기/추가: 끝까지 요소를 자도으로 명단요
새 요소를 추가하는 방법을 목록에 덮어쓰기/추가 다음과 같은 방법으로 사용할 수 있습니다.
기본 위치는 항상 새로운 요소 (길이 + 1) 에 추가될 포지셔닝하십시오.
삽입하십시오: 이 방법을 사용한 삽입하십시오 한계를 극복하기 위해 덮어쓰기/추가. 우리가 원하는 정확한 명시적으로 정의할 수 있는 새로운 요소를 삽입, 우리는 우리의 포지셔닝하십시오 삽입됩니다.
메서드입니다 설명자를 삽입하십시오 (인덱스화하여 객체). 우리는 우리의 두 개의 인수 걸리는 첫 번째와 두 번째 요소는 요소 삽입할지 인덱스화할 사용되고 있다.
확장하십시오: 이 때 매우 유용한 싶다 두 개 이상의 열거합니다 참가하십시오 하나의 목록. 두 가지 않고, 우리가 확장하십시오 정렬할지 결과 객체는 열거합니다 참가하십시오 열거합니다 목록이 있습니다.
만약 우리가 액세스하려는 바뀌엇어요 ([3]) 에 있는 요소를 pos 2, 우리 대신 요소. # 39, ll, 두 we& 열거합니다 힘을 써야 하는 덮어쓰기/추가.
여러 열거합니다 가입