본문 바로가기

programming/python

[ python 친해지기 #4 ] 파이썬 자료형 2탄 (리스트)

[ python 친해지기 #4 ] 파이썬 자료형 2탄 (리스트)

 

안녕하세요. 심심한 코딩쟁이입니다.

 

오늘은 파이썬 친해지기 시간으로 파이썬의 자료형 리스트에 대해서 알아보도록 하겠습니다.

 

자료형을 잘 다룰 수 있다면 원하는 로직을 구성할 때 활용하기 쉽기 때문에

 

손에 익을때까지 여러 번 사용해보시는 걸 추천드립니다.

 

자 오늘도 천천히 따라와주세요.

 

python-logo
파이썬 로고


리스트

 

자료형 리스트 만들기 위해서는 대괄호( [ ] )로 감싸 주고 쉼표 ( , )로 데이터를 구분해 줍니다.

 

리스트 생성 예시

 

# 리스트를 생성하는 다양한 방법
list1 = ['심심한', '코딩쟁이', '블로그', '환영합니다']
list2 = [] # 비어있는 리스트
list3 = [1, 3, 5]
list4 = ['심', '심', 2, 4]
list5 = [1, 2, [9, 8]] # 중첩된 리스트

 

리스트가 비어있거나, 숫자, 문자열, 혼합, 중첩 등등 다양한 요소들을 리스트 안에 넣을 수 있다.

 

리스트를 생성할 수 있게 되었으니 다음으로 리스트를 다루는 다양한 방법에 대해 알아봅시다.


인덱싱

 

인덱스란 각자의 고유한 번호를 가지고 있다고 생각하면 이해하기 쉽습니다.

 

인덱스는 문자열에도 적용되며 이 번호를 이용해 1개의 항목에만 접근하는 것을 인덱싱이라고 합니다.

 

# 리스트의 인덱싱
list = [1, 2, 3, 4]
print(list[0])

# 출력 결과
1

# 문자열의 인덱싱
str = 'symxsym'
print(str[3])

# 출력 결과
x

 

참고로 인덱스 번호는 앞에서부터 0으로 시작해서 1씩 증가합니다.

 

위 예시의 문자열을 기준으로 본다면 다음과 같은 인덱스를 가집니다.

 

문자열 s y m x s y m
인덱스 0 1 2 3 4 5 6
-7 -6 -5 -4 -3 -2 -1

 

중첩되어있는 리스트에 인덱싱하는 방법은 다음과 같습니다.

 

# 중첩된 리스트
list = [1, 2, 3, 4, [1, 2, 3, 4]]

# 중첩되어 있는 인덱스를 출력해본다.
print(list[4])
# 출력 결과
[1, 2, 3, 4]

# 자료형을 출력해본다.
print(type(list[4]))
# 출력 결과
<class 'list'>

# 리스트 내 리스트에 접근한다고 생각하면 이해하기 쉽다.
print(list[4][0])
# 출력 결과
1

 

리스트에서 인덱스 번호를 이용해 중첩되어있던 리스트를 꺼내고

 

꺼내온 리스트에 필요한 인덱스 번호에 접근한다라고 생각하시면 됩니다.


슬라이싱

 

언어적인 의미 그대로 인덱스 번호를 이용해 문자열 또는 리스트를 잘라서 나누는 동작을 의미합니다.

 

슬라이싱을 통해 필요한 정보만을 추출해 봅시다.

 

# 리스트의 슬라이싱
list = [6, 7, 8, 9]
print(list[0:2]) # 슬라이싱은 끝번호를 제외한 나머지를 잘라서 나눈다.
# 출력 결과
[6, 7]

print(list[-4:-2]) # - 번호를 넣어도 같은 결과가 출력됨.
# 출력 결과
[6, 7]

# 문자열의 슬라이싱
str = '심심한 코딩쟁이'
print(str[:5]) # 시작 번호를 생략하면 0이 디폴트값으로 들어감.
# 출력 결과
'심심한 코'

print(str[2:]) # 끝 번호를 생략하면 마지막 인덱스 번호가 들어감.
# 출력 결과
'한 코딩쟁이'

 

중첩된 리스트의 슬라이싱은 인덱싱에서 본 것과 같이 중첩되어있는 리스트를 꺼낸 후

 

그 리스트에 기본적인 슬라이싱을 진행해주면 됩니다. (코드 생략)


리스트 더하기, 곱하기

 

문자열의 더하기, 곱하기와 같은 원리로 동작한다. 예시를 살펴봅시다.

 

# 리스트의 더하기
list1 = ['a', 'b', 'c']
list2 = ['d', 'e', 'f']
list3 = list1 + list2
print(list3)
# 출력 결과
['a', 'b', 'c', 'd', 'e', 'f']

# 리스트의 곱하기
list = [1, 2, 3]
print(list * 2)
# 출력 결과
[1, 2, 3, 1, 2, 3]

리스트 길이 구하기

 

len() 함수를 사용합니다.

 

# 리스트의 길이구하기
list = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]
print(len(list))
# 출력 결과
10

리스트 값 수정하기

 

# 리스트 값 수정하기
list = [1, 2, 3, 4, 5]
list[4] = 'five'
print(list)
# 출력 결과
[1, 2, 3, 4, 'five']

list[0:2] = ['one', 'two'] # 슬라이싱을 이용해서 수정
print(list)
# 출력 결과
['one', 'two', 3, 4, 'five']

리스트 요소 삭제하기

 

# 리스트 요소 삭제하는 다양한 방법
list = [1, 1, 0, 0, 1, 1, 2]
list[2:4] = [] # 슬라이싱으로 접근해 빈 리스트를 삽입

print(list)
# 출력 결과
[1, 1, 1, 1, 2]

del list[4] # del 함수를 사용해 리스트의 요소 삭제
print(list)
# 출력 결과
[1, 1, 1, 1]

리스트 요소 추가하기

 

# 리스트 요소 추가하기 append
list = [1, 2]
list.append(3)

print(list)
# 출력 결과
[1, 2, 3]

list.append([1, 2, 3])
print(list)
# 출력 결과
[1, 2, 3, [1, 2, 3]]

# 구구단 리스트 만들기
list = []
for x in range(2,10): # 반복문 이용
    tmp = []
    for y in range(1,10):
        tmp.append(x*y)
    list.append(tmp)

print(list)
# 출력 결과
[[2, 4, 6, 8, 10, 12, 14, 16, 18],
[3, 6, 9, 12, 15, 18, 21, 24, 27],
[4, 8, 12, 16, 20, 24, 28, 32, 36],
[5, 10, 15, 20, 25, 30, 35, 40, 45],
[6, 12, 18, 24, 30, 36, 42, 48, 54],
[7, 14, 21, 28, 35, 42, 49, 56, 63],
[8, 16, 24, 32, 40, 48, 56, 64, 72], 
[9, 18, 27, 36, 45, 54, 63, 72, 81]]

리스트 정렬하기

 

# 리스트 정렬하기 sort
list = ['c', 'b', 'a']
list.sort()
print(list)
# 출력 결과
['a','b','c']

리스트 순서 뒤집기

 

# 리스트 순서 뒤집기 reverse
list = [1, 2, 3, 4, 5, 6, 7]
list.reverse()
print(list)
# 출력 결과
[7, 6, 5, 4, 3, 2, 1]

리스트 인덱스 찾기

 

# 리스트 인덱스 찾기 index
list = ['심','심','한','코','딩']

print(list.index('심'))
# 출력 결과
0 # 제일 먼저 일치하는 인덱스를 반환

print(list.index('쟁'))
# 출력 결과 에러 발생
Traceback (most recent call last):
  File "d:\test.py", line 320, in <module>    
    print(list.index('쟁'))
ValueError: '쟁' is not in list

리스트 요소 삽입하기

 

# 리스트 요소 삽입하기 insert
list = [1, 2, 3, 4]
list.insert(0, '심심한') # 0 번째에 '심심한' 삽입하기

print(list)
# 출력 결과
['심심한', 1, 2, 3, 4]

리스트 요소 제거하기

 

# 리스트 요소 제거하기 remove
list = ['심', '심', '심', '한', '코', '딩']
list.remove('심') # 처음으로 나오는 '심'을 삭제

print(list)
# 출력 결과
['심', '심', '한', '코', '딩']

리스트 확장하기

 

# 리스트 확장하기 extend
list = ['a', 'b', 'c']
list.extend(['d', 'e']) # 리스트를 넣어서 확장시킴.
			# append에 리스트를 넣는것 과는 다른 동작임.

print(list)
# 출력 결과
['a', 'b', 'c', 'd', 'e']

# list = list + ['f', 'g'] 를 줄여쓴 표현.
list += ['f', 'g'] # extend와 같은 동작을 합니다.
			
print(list)
# 출력 결과
['a', 'b', 'c', 'd', 'e', 'f', 'g']

리스트 요소 꺼내기

 

# 리스트 요소 꺼내기 pop
list = [9, 8, 7, 6, 5, 4]
result = list.pop() # 리스트의 마지막 요소를 반환하고 삭제한다.

print(result)
# 출력 결과
4

print(list)
# 출력 결과
[9, 8, 7, 6, 5]

리스트에 포함된 요소의 개수 카운팅

 

# 리스트에 포함된 요소의 개수 카운팅 count
list = [1, 1, 1, 1, 2, 2, 2, 3, 3, 4]

print(list.count(3)) # 리스트에 존재하는 3의 개수를 출력
# 출력 결과
2

리스트를 다루는 여러 가지 방법을 살펴보았습니다.


여기까지 파이썬 친해지기 네 번째 시간 파이썬 자료형 리스트에 대해서 알아보았습니다.

 

개발할 때 원하는 결과만 나오게 한다면 어떠한 방법을 쓰더라도 틀렸다고는 할 수 없습니다.

 

다만, 오늘 살펴본 리스트를 다루는 다양한 방법들을 보면서 상황에 적합한 함수를 사용할 줄 아는 것도

 

개발 실력의 일부분이라는 것을 말씀드리고 싶었습니다.

 

개개인의 코딩 스타일이 다른 것은 당연하나 최대한의 효율을 내는 코드를 만들어내는 것을

 

목표로 공부하다 보면 좋은 코딩 스타일을 가진 개발자가 될 수 있다고 생각합니다.

 

다들 원하는 바를 이루기 위해 열심히 노력하시고 노력한 만큼 잘 이뤄지길 바랍니다.

 

감사합니다.

반응형