[Python] 리스트 추가하기

    리스트를 추가와 삭제를 당연히 할 수 있다.

    그 방법에 여러가지 방법이 존재한다.

     

     

    append, extend, insert가 있다.

     

    arr = [10, 20, 30]
    arr.append(500)

    append는 리스트 끝에 요소 하나를 추가한다.

    [10, 20, 30[ 에 500을 append 사용 할 경우 [10, 20, 30, 500] 이 된다.

     

     

    그러나 여기서 조심해야할 점은 파이썬은 타입에 너무 자유롭다는 점이다.

     

     

    arr = [10, 20, 30]
    arr.append([100, 200])

    >>[10, 20, 30,[100,200]]

    그러므로 이렇게 append로 100, 200이 한 번에 들어올 경우에

    리스트 안에 리스트를 넣는 결과도 낳을 수가 있다.

     

    이에 대한 len(arr) 출력값은 4이다.

     

    이는 비어있는 리스트에도 추가가 가능하다.

     

     

     

    Extend

    arr = [10, 20, 30]
    arr.extend([500, 600])

    >>>[10, 20, 30, 500, 600]

    Extend 또한 리스트의 추가이다. 그러나 리스트를 연결한다라는 뜻에 더 강하다.

    리스트에 리스트가 들어가지 않고 뒤에 그대로 연결 된 모습을 확인 할 수가 있다.

     

     

     

    Insert

    a = [10, 20, 30]
    a.insert(2, 500)

    >>>[10, 20, 500, 30]

     

     

    Insert는 원하는 위치 중간에 값을 넣을 수가 있다. 이제 이를 잘 활용한다면 이와 같아진다.

    a = [10, 20, 30]
    a.insert(0, 500)

    >>>[500, 10, 20, 30]

     

    제일 처음에 500을 넣는 방식이다.

     

     

    a = [10, 20, 30]
    a.insert(len(a), 500)

    append처럼 제일 마지막에 값을 넣는 방법이다. 여기서 조심해야 할 점은 insert는 하나의 요소를 집어 넣는 방식이기 때문에 extend가 아닌 append처럼 리스트가 insert가 될 수가 있다.

     

    a = [10, 20, 30]
    a.insert(1, [500, 600])

    >>>10, 500, 600, 20, 30

     

     

    insert를 사용 할 때는 반드시 숙지 해야 할 주의 사항이다.

     

     

     

     

    리스트 삭제하기

    리스트 삭제할 때 사용하는 메소드는 두 가지 경우가 있다.

    a = [10, 20, 30]
    a.pop()

    >>>[10, 20]

     

     

    pop는 리스트의 마지막 값을 지우는 방식이다.  그렇다고 하나 pop가 중간에 삭제 하지 못 한다는 것은 아니다.

     

    a = [10, 20, 30]
    a.pop(1)

    >>>[10, 30]

     

    a = [10, 20, 30]
    del a[1]

    >>>[10, 30]

     

     

    이렇게 사용하여도 결과값은 중간이 삭제된 것을 확인 할 수 있다.

    그러나 그 전에 배웠던 del() 함수가 있기 때문에 pop만의 장점으로 보기는 어렵다는 것 뿐이다.

     

     

     

    리스트에서 특정 값 삭제하기

    이제 인덱스로 삭제가 아닌, 값을 검색해서 삭제 하는 방법이 있다.

    a = [10, 20, 30]
    a.remove(20)

    >>>[10, 30]

     

     

    remove가 20을 나타내므로 값 20을 지우고 10과 30만을 출력 하였다. 그런데 이 removie는 list안의 20의 값을 모두 삭제하는 것은 아니고, 만약 중복이 되어 여러개의 20이 있을 경우, 제일 앞에서 검색 된 20만 삭제된다는 점이다.

     

    a = [10, 20, 30, 20]
    a.remove(20)

    >>>[10, 30, 20]

     

    제일 앞에 있는 20만 삭제되었으므로 결과값을 출력 할 때 마지막에 20이 남아있음을 알 수가 있다.

     

     

     

    특정 값 인덱스 구하기

    a = [10, 20, 30, 15, 20, 40]
    a.ineex(20)

    >>>1

     

    index는 리스트에서 특정 인덱스(위치)를 구할 때 사용하는 함수이다.

    만약 예시처럼 값이 여러개 일 경우 제일 처음 검색 된 값만 결과값으로 나타내준다.

     

     

    특정 값 개수 구하기

    a = [10, 20, 30, 15, 20, 40]
    a.count(20)

    >>>2

     

     

    count는 리스트 안에 내가 찾고자 하는 결과값이 몇 개 인지를 검색 할 때 매우 유용하다.

    remove나 index처럼 한 개밖에 검색하지 못 하는 경우, 더 이상 내가 원하는 결과값이 있는지 없는지 유, 무의 판단에 중요한 함수가 될 수도 있다.

     

     

     

    리스트 순서 뒤집기

    a = [10, 20, 30, 15, 20, 40]
    a.reverse()

    >>>[40, 20, 15, 30, 20, 10]

     

     

    리스트의 결과값을 반대로 뒤집는 경우이다.

     

     

     

    리스트의 요소를 순서대로 정렬하기

    a = [10, 20, 30, 15, 20, 40]
    a.sort()

    >>>[10, 15, 20, 20, 30, 40]

     

     

    리스트의 요소들을 순서대로 정렬한다. 활용 방법에 따라 매우 유용한 방법이 될 수도 있다.

     

     

     

    리스트의 모든 요소를 삭제하기

    a = [10, 20, 30]
    a.clear()

    >>>[]

     

    clear는 리스트는 그대로 놔두고 안에 있는 값만 삭제시킨다. del[:] 과 효과는 동일하다.

     

     

     

    리스트 슬라이스로 조작하기

    a = [10, 20, 30]
    a[len(a):] = 500

    >>>[10, 20, 30, 500]

     

    a[len(a):은 시작 인덱스를 a 리스트의 마지막으로 지정해서 리스트의 마지막 인덱스보다 1이 더 큰 상태이다.

    그래서 500은 인덱스의 마지막으로 이동되어 값을 저장한다.

     

     

    여기서, 리스트를 추가할 때, 이는 extend일까...append일까.

    a = [10, 20, 30]
    a[len(a):] = [500, 600]

    >>>[10, 20,  30, 500, 600]

     

    정답은 extend 방식으로 들어가므로 참고하고 사용해야 한다.

     

     

     

    리스트 할당과 복사 알아보기

    a = [0, 0, 0, 0, 0]
    b = a

    일단 위의 방식은 할당의 방식이다.

     

    두 개의 리스트가 만들어졌으나, 두 개는 서로 똑같은 리스트를 두고 서로 다른 변수만 사용 할 뿐이다.

    a[1]의 값을 50으로 변경 할 경우 b[1]의 값도 50으로 변경한다.

     

     

     

    a = [0, 0, 0, 0]
    b = a.copy()

    서로 다른 리스트처럼 b는 a와 같은 값을 가졌으나 다른 리스트를 표현하려면 copy() 함수를 사용해야 한다.

     

     

    이제 할당과 복사에서

    a is b를 사용 할 경우 True와 False가 나타남을 확인해보자.

     

     

     

     

     

    반복문으로 리스트 요소를 모두 출력하기

    a = 38, 21, 53, 62, 19]
    for i in a:
    	print(i)

    이 방식은 a의 배열을 for의 i에 담아 반복문이 돌 때 해당 인덱스 위치값을 표현하는 식이다.

    약깐 설명이 어렵지만 한 번 결과를 돌려보면 알 수가 있다.

     

     

    a = [38, 21, 53, 62, 19]
    i = 0
    while i < len(a):
    	print(a)
       	i+=1

    for와 다르게 while은 초기문은 반복문 밖에, 증감문은 while문 안에 들어 있다.

     

     

     

    리스트의 가장 큰 수와 가장 작은 수 구하기

    a = [38, 21, 53, 72, 19]
    min(a)
    max(a)

    >>> 72

    >>> 19

     

    리스트의 가장 큰 수와 작은 수를 구 할 때 굳이 정렬 할 필요 없이 함수를 제공하므로 나열 할 필요는 없다.

     

     

    리스트 합계 구하기

    a = [ 10, 10, 10, 20]
    sum(a)

    >>> 50

     

    리스트가 갖고 있는 모든 값의 합계도 구할 수가 있다.

     

     

     

    리스트 표현식 사용하기

    파이썬의 리스트가 특이한 점은 리스트 안에 for 반복문과 if 조건문을 사용할 수 있다는 점이다.

    리스트 안에 for 반복문, if 조건문 등을 지정하여 리스트를 생성하는 것을 리스트 컴프리헨션 이라고 부른다.

     

    리스트에서 for문 사용하기

    a = [i for i in range(10)]
    b = list(i for in range(10))

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

     

     

    리스트에서 if문 사용하기

    a = [ i for in range(10) if i % 2 ==0]

    >>>[0, 2, 4, 6, 8]

     

    for문을 반복하지만 2의 나머지값이 0인 짝수만을 출력하라는 조건식이다.

    순서는 for문부터이며 for문안의 if문이 동작하고 그에 대한 결과값을 리스트 a가 담는다.

     

    응용을 한다면 한 번이 아닌 여러번 도 사용이 가능하다.

    a = [i * j for j in range(2, 10) for i in range(1, 10)]

    for문은 하나만 사용 할 수 있는 것은 아니다. 개수에는 제한이 없으므로 메모리가 허용하는 한 계속해서 사용 할 수가 있다.

    반응형

    'Language > Python' 카테고리의 다른 글

    [Python] 문자열 응용하기  (0) 2020.10.14
    [Python] 2차원 리스트 사용하기  (0) 2020.10.14
    [Python] if 사용하기  (0) 2020.10.13
    [Python] 딕셔너리 사용하기  (0) 2020.10.13
    [Python] 시퀀스 자료 활용하기  (0) 2020.10.13

    댓글

    Designed by JB FACTORY