콘텐츠로 건너뛰기

파이썬 왕기초 – 리스트(List)

파이썬에서 리스트는 여러 데이터를 담는 컨테이너형 변수이다. 리스트는 간단히 []를 이용하여 정의 가능하다.

# Defining List
list = [1, 2, 5, 10, 3, 0]

■ 리스트의 인덱싱과 슬라이싱

인덱싱(indexing)은 리스트 안의 특정 요소를 선택할 때 사용한다. list[i]로 인덱싱이 가능하고 파이썬에서는 항상 첫 번째 요소가 0부터 시작됨을 기억하자. -를 붙일 경우 뒤에서 i번째 요소를 선택하는데 이때 -1부터 시작하게 된다.

예를 들어 위에서 정의한 list의 0번째 요소를 선택하고 싶다면 list[0]을 입력하면 되고, 가장 마지막 요소를 선택하고 싶다면 list[-1]이고 뒤에서 두 번째 요소를 선택하고 싶다면 list[-2]를 입력하면 된다.

슬라이싱(slicing)은 범위를 지정해주는 것인데 기본적으로 list[start:end:step]으로 구성된다. end의 숫자는 선택 범위에 포함되지 않는데 예를 들어 list 내에서 0번째부터 3번째까지 범위를 선택하고 싶다면 list[0:4] 또는 list[:4]를 입력하면 된다. step은 디폴트값이 1이므로 입력하지 않아도 되고, 시작과 끝 수 역시 입력하지 않아도 된다.

# 리스트의 인덱싱과 슬라이싱
list = [1, 2, 5, 10, 3, 0]
print("list = ", list)


print("list[2] = {}".format(list[2]))
print("list[-1] = {}".format(list[-1]))
print("list[-3] = {}".format(list[-3]))
print("list[0:2] = {}".format(list[0:2]))
print("list[:3] = {}".format(list[:3])) 
print("list[3:] = {}".format(list[3:]))
print("list[0:4:2] = {}".format(list[0:4:2]))

■ For문에서의 리스트

리스트는 기본적으로 순회가 가능하기 때문에 max, min과 같은 함수의 입력으로도 사용할 수 있고 for문에서도 사용 가능하다.

for i in list:
    print(i)

만약, 아까 위에서 인덱싱을 출력할 때 for문을 사용하고 싶다면 어떻게 할까? 이제 일일이 list[i] 중 숫자 i를 하드코딩할 필요없이 다음과 같이 간단히 출력할 수 있다.

for i in range(0, len(list)):
    print("list[",i,"] = {}".format(list[i]))

이때 주의할 것은 우리는 리스트 내의 0번째부터 끝 범위에서 하나씩 인덱싱을 하고 싶으므로 범위를 뜻하는 range를 사용해야 한다. len(list)는 list의 길이를 나타내며 이 문제에서는 list가 [1, 2, 5, 10, 3, 0] 총 6개이므로 len(list) 역시 6이다.

■ 리스트 요소의 추가/삭제/위치 반환

리스트는 요소를 변경할 수 있다는 또 다른 특징을 갖고 있다. 또 다른 데이터 구조인 튜플(tuple)과 리스트는 그 쓰임이 거의 유사하지만 바로 이 지점에서 큰 차이점을 보인다.

사용 방법은 간단하므로 코드와 결과값만 살펴보아도 충분히 이해할 수 있을 것이다.

# append
list1 = [7, 7, 77, 777]
list1.append(0)
print(list1)

# insert
list2 = [7, 7, 77, 777]
list2.insert(1, 8)
print(list2)

# remove
list3 = [7, 7, 77, 777]
list3.remove(7)
print(list3)

# pop -- 마지막 요소 삭제
list4 = [7, 7, 77, 777]
list4.pop()
print(list4)

# index
list5 = [7, 7, 77, 777]
print("7의 위치:{}".format(list5.index(7)))
print("77의 위치:{}".format(list5.index(77)))
print("8의 위치:{}".format(list5.index(8))) # 8은 없으므로 error (8 is not in list)

마지막으로 list는 +를 통해 합쳐질 수 있다.

안좋은 고객으로 할당된 고객 데이터를 보고 이제 문제점을 찾아 개선하면 된다!

이번에는 클러스터링을 이용하여 지역마다의 마케팅 활동에 대해 인사이트를 얻어보자. 우편번호이기 때문에 따로 전처리를 할 필요는 없다. 다만, 전처리된 데이터 세트와 원 데이터의 세트의 레코드가 동일한 순서이기 때문에 clusterer로는 전처리된 데이터에서 생성된 것을 그대로 사용해도 된다.

list1 = [1, 1, 1]
list2 = [2, 2, 2]
print(list1 + list2)

태그: