본문 바로가기

Python

파이썬 리스트(list) 사용법 정리

이번 포스팅에서는 파이썬의 가장 기본이 되는 리스트에 관한 사용법을 정리해보려고 한다. 

 

본인의 경우, 수리모델을 코딩할 때 numpy와 더불이 많이 사용한다.

 

그래서 이번 기회에 전체적으로 한번 정리하는 의미에서 포스팅을 작성해보려고 한다. 

 

1.  Index() : 리스트의 특정 요소의 위치를  반환하는 파이썬의 내장함수

week = ['월', '화', '수', '목', '금', '토', '일', '수']    # week라는 리스트를 정의 

component = '수'     # component를 week 리스트의 요소 중 하나인 '수'로 정의 

position = week.index(component)        # 리스트 week에서 '수'의 index를 반환 (이때, 찾는 범위는 전 범위)

print('%s요일은 일주일 중 %d번째에 위치하고 있습니다.' %(component, position))

position1 = week.index(component, 5).  # 리스트 week에서 '수'의 index를 반환 (이때, 찾는 범위는 인덱스 5이후를 반환

print('%s요일은 일주일 중 %d번째에 위치하고 있습니다.' %(component, position1))

 

코드 실행 결과

수요일은 일주일 중 2번째에 위치하고 있습니다.
수요일은 일주일 중 7번째에 위치하고 있습니다. 

 

 

이를 응용하면 리스트의 원소를 다른것으로 대체할 수 있다. 

week = ['월', '화', '수', '목', '금', '토', '일', '수']
com = '수'
for i in week:                #  week 리스트의 원소 갯수만큼 반복
      if i == com:            # 만약 week의 원소와 com이 같다면
         position = week.index(i)   # position을 i의 index로 정의하고   
         week[position] = '수요일'      # week의 position으로 반환된 index의 내용을 '수요일' 바꿈 
week

 

코드 실행 결과

['월', '화', '수요일', '목', '금', '토', '일', '수요일]

 

 

 

2. reverse() : 리스트의 요소를 거꾸로 정렬하는 내장함수
week = ['월', '화', '수', '목', '금', '토', '일']

week.reverse()      # 역순으로 만들라는 내장함수 method임.

print(week)

new_week = week.reverse()

print(None)

 

코드 실행 결과

['일', '토', '금', '목', '수', '화', '월']
None

 

new_week = week.reverse() 이런식으로 코드를 작성하면,

 

new_week를 week 리스트의 역순으로 정렬된 리스트로 정의할 수 있을 것 같지만, 이런식으로 작성하면 안된다는것을 알면 좋을 것 같다. 

 

이것 말고 다른 방법으로 리스트의 요소를 거꾸로 정렬 할 수 있다.  

old_data = list(range(5))       # old_data = [0, 1, 2, 3, 4] 로 정의 

new_data = reversed(old_data).  # new_data를 old_data의 역순으로 정렬한 리스트로 정의 

print(old_data)

print(new_data)     # new_data의 주소값만을 반환함. 

print(list(new_data))     # 주소값을 list형태로 반환

 

코드 실행 결과

[0, 1, 2, 3, 4]
<list_reverseiterator object at 0x7fce8a9970d0>
[4, 3, 2, 1, 0]

 

 

3. append() : 리스트의 마지막에 요소를 추가하는 내장함수 

week = ['월', '화', '수', '목', '금', '토']

print('요소 추가 전 : ', week)

week.append('일요일')      # week 리스트 마지막에 '일요일' 요소를 추가 

print('요소 추가 후 : ', week)

 

코드 실행 결과

요소 추가 전 : ['월', '화', '수', '목', '금', '토']
요소 추가 후 : ['월', '화', '수', '목', '금', '토', '일요일']

 

4. insert() : 리스트의 특정 위치에 요소를 추가하는 내장함수 

number = [0,1,3,4,5,6,7]
print(number)
number.insert(2,'two')    #number 리스트의 2번째 위치에  'two'를 추가
print(number)

 

코드 실행 결과

[0, 1, 3, 4, 5, 6, 7]
[0, 1, 'two', 3, 4, 5, 6, 7]

5. del : 리스트의 특정 위치를 기준으로 요소를 제거 / 리스트를 제거하는 내장함수

week = ['월', '화', '수', '목', '금', '토', '일']
del week[0]                                              # 리스트 week의 0번째 요소인 '월'를 제거
print('"월"이 제거된 리스트 : ' , week)      # 리스트 week 출력 

del week[-2]                                            # 리스트 week의 끝에서 2번째 요소인 '토'를 제거 
print('"토"가 제거된 리스트 : ' , week).     # 리스트 week 출력 

country = ['usa', 'japan', 'northkoea', 'china', 'france', 'canada', 'germany']
del country[2:4]                                      # 리스트 원소 2번부터 3번을 제거 해야한다는 것임. 4번은 미포함
print(country)

del country print(country)    # country라는 리스트 삭제

 

코드 실행 결과

"월"이 제거된 리스트 : ['화', '수', '목', '금', '토', '일']
"토"가 제거된 리스트 : ['화', '수', '목', '금', '일']
['usa', 'japan', 'france', 'canada', 'germany']

6. remove() : 리스트의 특정 요소를 제거

fruit = ['apple', 'kiwi', 'banana', 'melon', 'orange']
print('삭제 전 : ', fruit)
fruit.remove('kiwi)     # fruit 리스트에서 'kiwi'요소를 특정하여 제거      
print('삭제 후 : ', fruit)

 

코드 실행 결과

삭제 전 : ['apple', 'kiwi', 'banana', 'melon', 'orange']
삭제 후 : ['apple', 'kiwi', 'melon', 'orange']

 

7. count() : 리스트에서 특정 요소의 갯수를 구하는 내장함수

example = [1,2,2,3,3,3,4,4,4,4,5,5,5,5,6,6,6,7,7,7,8,9,10,10]
c1 = example.count(2)           # example 리스트에서 '2'가 몇개 있는지 반환
c7 = example.count(7).          # example 리스트에서 '7'이 몇개 있는지 반환
print('2의 갯수는 :  ', c1)
print('7의 갯수는 :  ', c7)

 

코드 실행 결과

2의 갯수는 : 2
7의 갯수는 : 3

 

8. sum() : 리스트 내부에 있는 숫자의 합을 구하기

num_list = [1,2,3,4,5,6,7,8,9,10]
total_sum = sum(num_list)
print('num_list의 숫자 총합은', total_sum,'입니다.')

 

코드 실행 결과

num_list의 숫자 총합은 55 입니다.

9. enumerate() : 리스트에서 요소와 그 인덱스를 쌍으로 추출하는 내부 함수

days = ['월', '화', '수', '목', '금', '토', '일']
example = list(enumerate(days))      # enumerate는 반복 가능한 자료의 인덱스와 요소를 쌍으로 추출하여 리스트로 반환) print(example)              # (인덱스, 요소)를 쌍으로 추출한 리스트를 출력

for i, j in enumerate(example):

      print('한주의 %d번째 요일은 %s요일입니다.'%(i,j))

 

코드 실행 결과

[(0, '월'), (1, '화'), (2, '수'), (3, '목'), (4, '금'), (5, '토'), (6, '일')]
한주의 0번째 요일은 월요일입니다.
한주의 1번째 요일은 화요일입니다.
한주의 2번째 요일은 수요일입니다.
한주의 3번째 요일은 목요일입니다.
한주의 4번째 요일은 금요일입니다.
한주의 5번째 요일은 토요일입니다. 
한주의 6번째 요일은 일요일입니다.

10. sort() : 리스트의 요소를 오름차순 또는 내림차순으로 정렬

namelist = ['mary','sam','ali','bob','kelly','clay']
print('원래 리스트 : ',namelist)
namelist.sort()
print('정렬 리스트 : ',namelist)
s_namelist = sorted(namelist, reverse = True)      # 역순으로 정렬하는 의미임.
print('역순 리스트 : ',s_namelist)

 

코드 실행 결과

원래 리스트 : ['mary', 'sam', 'ali', 'bob', 'kelly', 'clay']
정렬 리스트 : ['ali', 'bob', 'clay', 'kelly', 'mary', 'sam']
역순 리스트 : ['sam', 'mary', 'kelly', 'clay', 'bob', 'ali']

11. 리스트에서 요소 추출하기 

#리스트에서 특정구간의 요소 추출하기
week = ['월', '화', '수', '목', '금', '토', '일']
front = week[0:4]     # 리스트의 0번부터 4번까지 추출하기  / 슬라이스를 활용한 것임
back = week[5:]       # 리스트의 5번부터 끝까지    / 슬라이스를 활용한 것임.
print(front)
print(back)
print("- - - - - - - - -")

# 리스트에서 일정한 간격으로 요소 추출하기 
evenweek = week[::2]     # 짝수 index만 추출, 0,2,4,6  가장 마지막 2는 index의 간격을 의미
oddweek = week[1::2]     # 홀수 index만 추출 , 1,3,5,7  index번호 1부터 시작해서 간격 2씩 띄어서 추출
print(evenweek)
print(oddweek)

 

코드 실행 결과

['월', '화', '수', '목']
['토', '일']
- - - - - - - - -
['월', '수', '금', '일']
['화', '목', '토']