2021년 9월 25일 토요일

python (list) 자료구조-리스트(삭제,합치기,추가,extend)

python (basic, start)기초 설치 및 시작하기

python (number,variable,string)숫자,변수,문자열

python (list) 자료구조-리스트


list

파이썬은 다른 값들을 덩어리로 묶는데 사용되는 가장 편한 방법은 리스트 입니다. 대괄호 사이에 쉼표로 구분된 값(항목)들의 목록으로 표현될 수 있습니다. 그리고 리스트는 서로 다른 형의 항목들을 포함할 수 있습니다.

문자열(그리고, 다른 모든 내장 시퀀스 형들)처럼 리스트는 인덱싱하고 슬라이싱할 수 있습니다.

모든 슬라이스 연산은 요청한 항목들을 포함하는 새 리스트를 돌려줍니다.

id() 함수는 python 자원의 id값을 넘겨줍니다. 아래 예제에서 사본의 경우 id가 다름을 알 수 있습니다.

>>> a = [1, 3, 5, 7, 9]
>>> a
[1, 3, 5, 7, 9]
>>> a[0]
1
>>> a[3]
7
>>> a[3:]
[7, 9]
>>> a[:]
[1, 3, 5, 7, 9]
>>> id(a)
1727802766976
>>> id(a[:])
1727802954304

리스트는 + 연산도 지원합니다. 뒤쪽으로 붙습니다.

>>> [1,2,3]+[2,3,4]
[1, 2, 3, 2, 3, 4]

리스트는 내용 변경이 가능합니다.

>>> a=[1,3,5,7]
>>> a[2]=6
>>> a
[1, 3, 6, 7]

list.append(x) 

메서드 (method) 를 사용하면 리스트의 끝에 새 항목을 추가할 수 있습니다. + 항목과 조금 다릅니다.

추가하려는 type형태를 취해야하고 list형태를 넣게 되면 list type항목으로 추가가 됩니다.

>>> a.append(9)
>>> a
[1, 3, 5, 7, 9]
>>> a.append([10])
>>> a
[1, 3, 5, 7, 9, [10]]
>>> [1,3,5,7]+2
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
TypeError: can only concatenate list (not "int") to list
>>> [1,3,5,7]+[2]
[1, 3, 5, 7, 2]

슬라이스 대입

>>> letters = ['a', 'b', 'c', 'd', 'e', 'f', 'g']
>>> letters
['a', 'b', 'c', 'd', 'e', 'f', 'g']
>>> letters[2:5] = ['C', 'D', 'E']
>>> letters
['a', 'b', 'C', 'D', 'E', 'f', 'g']

교체와 삭제

슬라이싱 크기보다 작은 list를 입력하면 길이가 줄어듭니다.

>>> letters = ['a', 'b', 'c', 'd', 'e', 'f', 'g']
>>> letters
['a', 'b', 'c', 'd', 'e', 'f', 'g']
>>> letters[2:5] = ['C', 'D', 'E']
>>> letters
['a', 'b', 'C', 'D', 'E', 'f', 'g']
>>> letters[2:5] = ['C', 'D']
>>> letters
['a', 'b', 'C', 'D', 'f', 'g']
>>> letters[2:5] = []
>>> letters
['a', 'b', 'g']

내장 함수 len() 은 리스트에도 적용됩니다:

>>> a=[1,3,5,7]
>>> len(a)
4

리스트를 중첩하여 다차원으로 배열처럼 사용할 수 있습니다.

>>> a=[['a', 'b', 'c'], [1, 2, 3]]
>>> a[1][0]
1
>>> a[0][0]
'a'
>>> a[0][1]
'b'
>>> a[0][2]
'c'

list.insert(i, x)

주어진 위치에 항목을 삽입합니다. 첫 번째 인자는 삽입되는 요소가 갖게 될 인덱스입니다. 그래서 a.insert(0, x) 는 리스트의 처음에 삽입하고, a.insert(len(a), x) 는 a.append(x) 와 동등합니다.

>>> a=[1,3,5,7]
>>> a.insert(1,2)
>>> a
[1, 2, 3, 5, 7]

참고

     [1,3,5,7]
index 0 1 2 3
        *
     [1,*,3,5,7] 

list.remove(x)

리스트에서 값이 x 와 같은 첫 번째 항목을 삭제합니다. 그런 항목이 없으면 ValueError를 일으킵니다.

remove의 인자는 인덱스가 아님을 주의해야합니다.

>>> a=[1,3,5,7]
>>> a.remove(3)
>>> a
[1, 5, 7]

특정 위치를 삭제하고자 한다면 index 슬라이싱을 이용하여 삭제합니다. del 을 이용하여 삭제 가능합니다.

슬라이싱에 넘어가는 인자는 from 일때 인덱스 포함, to 인덱스 미포함 입니다.

아래예제에서 index [2]인 5라는 숫자를 삭제하고자 하려고 하는 시도 입니다. 첫번째 시도 a[2]=[]로는 제대로 동작하지 않음을 참고하세요.

또한 pop() 메소드를 이용한 방법도 있습니다.

>>> a=[1,3,5,7]
>>> a[2]=[]
>>> a
[1, 3, [], 7]
>>> a[2:3]=[]
>>> a
[1, 3, 7]

list.pop([i])

리스트에서 주어진 위치에 있는 항목을 삭제하고, 그 항목을 돌려줍니다. 인덱스를 지정하지 않으면, a.pop() 은 리스트의 마지막 항목을 삭제하고 돌려줍니다. (메소드에서 i 를 둘러싼 대괄호는 매개변수가 선택적임을 나타냅니다. 그 위치에 대괄호를 입력해야 한다는 뜻이 아닙니다. 이 표기법은 파이썬 라이브러리 레퍼런스에서 자주 등장합니다.)

>>> a=[1,3,5,7]
>>> a.pop()
7
>>> a
[1, 3, 5]
>>> a.pop(1)
3
>>> a
[1, 5]

list.clear()

리스트의 모든 항목을 삭제합니다. del a[:] 와 동등합니다.

>>> a=[1,3,5,7]
>>> a.clear()
>>> a
[]

list.index(x[, start[, end]])

리스트에 있는 항목 중 값이 x 와 같은 첫 번째 것의 0부터 시작하는 인덱스를 돌려줍니다. 그런 항목이 없으면 ValueError 를 일으킵니다.

선택적인 인자 start 와 end 는 슬라이스 표기법처럼 해석되고, 검색을 리스트의 특별한 서브 시퀀스로 제한하는 데 사용됩니다. 돌려주는 인덱스는 start 인자가 아니라 전체 시퀀스의 시작을 기준으로 합니다.

>>> a=[1,3,5,7]
>>> a.index(3)
1
>>> a.index(7)
3
>>> a=[1,3,5,3]
>>> a.index(3)
1
>>> a.index(3,2)
3

list.count(x)

리스트에서 x 가 등장하는 횟수를 돌려줍니다.

>>> a=[1,3,5,3]
>>> a.count(1)
1
>>> a.count(3)
2
>>> a.count(2)
0

list.sort(*, key=None, reverse=False)

리스트의 항목들을 제자리에서 정렬합니다 (인자들은 정렬 커스터마이제이션에 사용될 수 있습니다. 설명은 sorted() 를 검색해 보세요). 여기에서는 간단한 예제만 들도록 하겠습니다.

>>> a=[1,3,5,3]
>>> a.sort()
>>> a
[1, 3, 3, 5]
>>> a.sort(reverse=True)
>>> a
[5, 3, 3, 1]

list.reverse()

리스트의 요소들을 순서를 뒤집습니다.

>>> a=[1,3,5,3]
>>> a.reverse()
>>> a
[3, 5, 3, 1]

list.copy()

리스트의 사본을 돌려줍니다. a[:] 와 동등합니다.

>>> a=[1,3,5,3]
>>> a.copy()
[1, 3, 5, 3]

리스트를 스택으로 사용하기

리스트 메서드들은 리스트를 스택으로 사용하기 쉽게 만드는데, 마지막에 넣은 요소가 처음으로 꺼내지는 요소입니다 (《last-in, first-out》). 스택의 꼭대기에 항목을 넣으려면 append() 를 사용하세요. 스택의 꼭대기에서 값을 꺼내려면 명시적인 인덱스 없이 pop() 을 사용하세요. 

>>> a=[]
>>> a.append(6)
>>> a.append(7)
>>> a
[6, 7]
>>> a.pop()
7
>>> a.pop()
6
>>> a.pop()
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
IndexError: pop from empty list

list.extend(x)

이건 append(x)와 비슷한데 추가할때 append는 x 형태 그대로 리스트에 붙이지만

extend는 x를 list한거풀 벗기고 추가하게 됩니다.

예를 들어 보겠습니다.

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


list index삭제 방법 여러가지 존재함

1. list[X:Y]=[]

2. list.pop(index)

3. del list[index]

4. del list[X:Y]





댓글 없음:

댓글 쓰기