리스트 다루기
이어서 리스트 더하기와 곱하기에 대해서 알아보도록 하겠습니다.
문자열과 마찬가지로 리스트도 더하기와 곱하기를 할 수 있습니다. 더하기는 두 리스트를 연결하고 곱하기는 리스트를 곱한 수만큼 반복합니다. 우선 리스트 더하기의 예를 살펴보겠습니다.
In : list_con1= [1,2,3,4]
list_con2= [5,6,7,8]
list_con= list_con1+list_con2
print(list_con)
Out : [1,2,3,4,5,6,7,8]
다음은 곱하기의 예입니다.
In : list_con1= [1,2,3,4]
list_con= list_con1 * 3
print(list_con)
Out : [1,2,3,4,1,2,3,4,1,2,3,4]
리스트 중 일부 항목 가져오기
앞에서는 '리스트[i]'를 이용해 인덱스가 i인 항목을 가져왔습니다. 다음과 같이 인덱스의 범위를 지정해 리스트 중 일부 항목을 가져올 수 잇습니다.
리스트[i_start : i_end] 리스트[i_start : i_end : i_step] |
i_start, i_end, i_step은 각각 인덱스의 시작, 끝, 스텝(증가 단계)입니다. 위와 같이 인덱스의 범위를 지정하면 'i_start'에서 'i_end-1'까지의 리스트를 반환합니다. 또한 i_start를 생략하면 인덱스는 0으로 간주하고 i_end를 생략하면 인덱스는 마지막이라고 간주합니다. 다음은 인덱스의 범위를 지정해 리스트 중 일부 항목을 가져오는 예입니다.
In : list_data = [0,1,2,3,4,5,6,7,8,9]
print(list_data)
print(list_data[0:3])
print(list_data[4:8])
print(list_data[:3])
print(list_data[7:])
print(list_data[::2])
Out : [0,1,2,3,4,5,6,7,8,9]
[0.1.2]
[4,5,6,7]
[0,1,2]
[7,8,9]
[0,2,4,6,8]
위와 같이 리스트의 범위를 지정해 원하는 부분만 가져오는 것은 리스트를 처리할 때 자주 이용하니 잘 알아두기 바랍니다.
리스트에서 항목 삭제하기
만약 리스트에서 인덱스가 i인 항목을 삭제하려면 'del 리스트[i]'를 이용합니다. 다음 코드를 살펴보겠습니다.
In : print(list_data)
del list_data[6]
print(list_data)
Out : [0,1,2,3,4,5,6,7,8,9]
[0,1,2,3,4,5,7,8,9]
위의 결과를 보면' del list_data[6]'을 실행해 인덱스 6의 위치에 있는 항목(여기서는 6)이 삭제됐습니다.
리스트에서 항목의 존재 여부 확인하기
리스트에 어떤 항목이 있는지 확인하려면 '항목 in 리스트'를 이용합니다. 리스트에 항목이 있으면 True를, 없으면 False를 반환합니다. 다음 예제를 봅시다.
In : list_data1 = [1,2,3,4,5]
print(5 in list_data1)
print(6 in list_data1)
Out : True
False
위의 결과에서 5는 리스트 list_data1의 요소이므로 True를 반환했고 6은 리스트의 요소가 아니므로 False를 반환했습니다.
리스트 메서드 활용하기
파이썬에서는 데이터 타입(자료형)별로 이용할 수 있는 다양한 함수를 제공하는데 이를 메서드라고 합니다. 메서드를 이용하면 데이터 처리를 손쉽게 할 수 있습니다. 메서드는 다음과 같은 형식으로 사용할 수 있습니다.
자료형.메서드이름() |
만약 데이터를 변수에 할당했다면 다음과 같이 변수명을 이용할 수도 있습니다.
변수명.메서드이름() |
리스트에서는 데이터의 추가, 삽입, 삭제 등의 작업을 메서드로 수행할 수 있습니다. 아래의 표는 리스트에서 사용할 수 있는 메서드를 정리한 것입니다.
리스트 메서드 | 설명 | 사용 예 |
append() | 리스트에서 항목 하나를 맨 마지막에 추가 | myFriends.append('Thomas') |
insert() | 리스트에서 특정 위치에 항목을 삽입 | myFriends.insert(1,'Paul') |
extend() | 리스트에서 항목 여러 개를 맨 마지막에 추가 | myFriends.extend(['Laura','Betty'] |
remove() | 입력값과 첫 번째로 일치하는 항목을 리스트에서 삭제 | myFriends.remove('Laura') |
pop() | 리스트의 마지막 항목을 제거한 후에 반환 | popFriend = myFriends.pop() |
index() | 리스트에서 인자와 일치하는 첫 번째 항목의 위치를 반환 | indexFriend = myFriends.index('Lisa') |
count() | 리스트에서 인자와 일치하는 항목의 개수를 반환 | countFriend = myFriends.count('Mary') |
sort() | 숫자나 문자열로 구성된 리스트 항목을 순방향으로 정렬 | myFriends.sort() |
reverse() | 리스트 항목을 끝에서부터 역순으로 정렬 | myFriends.reverse() |
위의 표에서 설명한 리스트 메서드 중 많이 사용하는 몇 개를 살표보겠습니다. 우선 append()를 살펴보겠습니다. append()는 리스트의 맨 끝에 새로운 항목을 추가합니다.
In : myFriends = ['James', 'Robert', 'Lisa', 'Mary']
print(myFriends)
myFriends.append('Thomas')
print(myFriends)
Out : ['James', 'Robert', 'Lisa', 'Mary']
['James', 'Robert', 'Lisa', 'Mart', 'Thomas']
위 코드에서 리스트 변수 myFriends를 생성한 후에 append() 메서드를 이용해 'Thomas'를 추가했습니다. 결과에서 볼 수 있듯이 마지막 항목 다음에 'Thomas'라는 항목이 추가됐습니다.
다음으로 insert()에 대해 알아보겠습니다. insert() 메서드는 리스트의 원하는 위치에 데이터를 삽입하는 데 이용합니다. 사용법은 다음과 같습니다.
자료형.insert(i,data) |
항목의 위치를 나타내는 인덱스 i에 data가 삽입됩니다. 이때 기존의 인덱스가 i이상인 항목은 인덱스가 1씩 증가하면서 이동합니다.
다음의 코드르 살펴봅시다.
In : myFriends = ['James', 'Robert', 'Lisa', 'Mary']
print(myFriends)
myFriends.insert(1,'Paul')
print(myFriends)
Out : ['James', 'Robert', 'Lisa', 'Mary']
['James', 'Paul', 'Robert', 'Lisa', 'Mary']
위의 'myFriends.insert(1,'Paul')'는 인덱스 1번 위치에 'Paul'을 삽입하라는 뜻입니다. 여기서 항목 1번 위치에 'Paul'이 들어가면서 기존의 인덱스가 1 이상인 항목들은 위치가 1씩 이동했음을 알 수 있습니다.
다음은 extend()입니다. extend()메서드는 리스트의 맨 끝에 여러 개의 항목을 추가하는 데 이용합니다. 다음의 코드를 살펴봅시다.
In : myFriends = ['James', 'Robert', 'Lisa', 'Mary']
print(myFriends)
myFriends.extend(['Laura', 'Betty'])
print(myFriends)
Out : ['James', 'Robert', 'Lisa', 'Mary']
['James', 'Robert', 'Lisa', 'Mary', 'Laura', 'Betty']
기존 리스트의 맨 끝에 두 개의 새로운 항목이 추가된 것을 볼 수 있습니다.
지금까지 리스트의 메서드를 활용하는 방법을 살펴봤습니다. 설명하지 않은 리스트 메서드도 있는데, 위의 표를 참고하면 필요할 때 충분히 이용할 수 잇을 것입니다.
출처 : 데이터분석을 위한 파이썬 철저 입문 中