파이썬도 타 언어들과 같이 배열이 존재합니다. 단순 배열이기보단 상위 레벨 언어답게 다양한 기능을 제공합니다.
리스트 기본
리스트의 생성은 직접 리스트 값을 넣거나 꺽쇠로 리스트를 선언 혹은 리스트 생성자로 직접 리스트를 선언할 수 있습니다.
li=[1,2,3,4,5]
li2=[]
li3=list()
리스트에 요소를 추가할 때는 append() 메서드를 사용합니다.
li.append(1)
반대로 삭제는 remove()를 사용합니다.
인덱스
list1=[1,2,3,4,5]
list1의 예로 인덱스는 0부터 시작합니다. 때문에 list1[0] : 1입니다. 해당 인덱스는 0~4 범위를 가지게 됩니다.
파이썬에서는 인덱스에서 음수도 다룰 수 있습니다. 끝 요소 list1[4] : 5부터 -1로 시작해 앞으로 역순으로 인덱스를 지정할 수 있습니다.
배열을 벗어나게 되면 양, 음수 인덱스 모두 인덱스 에러를 발생시키게 됩니다.
리스트 슬라이싱
파이썬 배열에서 매우 매력적인 기능 중 하나입니다. 리스트 슬라이싱을 하면 범위 또는 조각 단위로 지정할 수 있게 됩니다.
list[s:]
list[:e]
list[:]
list[s:e]
list[s:e:step]
- list[start:] : start부터 끝까지 지정
- list[:end] : 처음부터 end까지 지정
- list[:] : 전구간
- list[start:end] : start부터 end 지점까지 지정
- list[start:end:step] : start부터 step만큼 end까지 지정
예를 들어 인덱스 3~5구간을 지정하고 싶다면 list_x [3:5]로 표현하면 됩니다.
파이썬에서는 특별하게 step이라는 것이 있습니다. step만큼 건너뛰게 하는 것으로 step은 기본값으로 1을 가지고 있습니다.
list_x=[1,2,3,4,5,6,7]
print(list_x[0:6:2]) #1,3,5,7 반환
list_x에서 list_x[0:6:2]를 예를 들면 1,3,5,7을 반환하게 됩니다.
음수 step도 가능합니다. step에 -1을 입력하게 되면 굳이 메서드를 이용하지 않더라도 역순으로 출력시킬 수 있습니다.
리스트 복사
리스트는 복사할 때 얕은 복사로 진행이 됩니다. 즉 진짜 메모리상에서 분리되어 다른 항목으로 되는 것이 아닌 사실상 수정 시 같이 바뀌게 되는 복사로 진행이 되게 됩니다.
list2=list1 같은 경우
list2에 list1을 복사하는 것 같지만 같은 리스트 객체를 참조하고 있어 사실상 이름만 다른 별칭을 추가한 것이나 다름없는 표현입니다.
list2=list1[:]
이와 같은 경우는 멤버 객체를 하나하나 복사한 것이기 때문에 얕은 복사입니다. 하지만 list1의 요소를 수정하게 되면 list2도 같이 변경되게 됩니다.
이를 방지하기 위해 메모리 상에서도 분리되게 하는 깊은 복사를 해야 할 때가 있습니다. 깊은 복사를 하기 위해서는 copy를 포함한 후 deepcopy 함수를 사용해야 합니다. 다음 예는 deepcopy의 사용 예입니다.
import copy
list1=[1,2,3,4]
list2=copy.deepcopy(list1)
리스트 메서드
리스트에는 메서드가 포함되어있습니다.
list.append()
단일 항목을 추가하는 메서드
list.insert(i,v)
원하는 위치에 값을 삽입합니다. 원하는 인덱스 위치 i, 값 v를 지정하여 삽입합니다.
list.pop(a)
a인덱스에 위치한 값을 제거합니다. 기본값으로는 마지막 요소를 제거합니다. 비슷하게는 remove()가 있습니다.
list.remove()
값의 첫 인스턴스를 제거합니다.
list.clear()
list의 모든 값을 제거합니다.
list.sort(key=None,reverse=False)
key와 reverse를 지정할 수 있고 key는 정렬 방식 (함수), reverse는 bool값으로 역순 여부를 지정합니다. 기본 값은 key=None, reverse는 False입니다.
list.reverse()
sort의 reverse와는 전혀 다릅니다. 현재 배열 순을 뒤집는 메서드입니다. list[::-1]과 동일합니다.
list.count(v)
요소의 개수를 반환합니다.
list.index(v)
인덱스 값을 반환합니다.
'Programming > Python' 카테고리의 다른 글
파이썬 format 메서드 다양한 포매팅을 돕는 메서드 (0) | 2021.08.22 |
---|---|
파이썬 % 포매팅에 대하여 (0) | 2021.08.14 |
파이썬 람다 Lambda 함수와 (if~else,map,reduce, filter)응용 (0) | 2021.08.08 |
파이썬 AES 암호화 파일 예제 (2) | 2021.07.23 |
파이썬 Crypto 모듈 설치 (0) | 2021.05.14 |
댓글