CHAPTER 05 리스트와 문자열

유동헌·2021년 9월 3일
0

열혈파이썬_기초편

목록 보기
5/14

01 print 함수의 복습과 확장

줄을 바꾸지 않고 출력하는 방법

for i in [1,2,3]:
    print(i, end="_")

# 출력
1_2_3_

📌 end = ""출력 마치고 나면 줄 바꾸는 것 대신에 를 출력해 주세요! 라는 뜻

02 리스트형 데이터

>>> 35
35
>>> happy
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
NameError: name 'happy' is not defined
>>> 3.14
3.14
>>> for i in [1,2,3]:
...     pass
...
>>>
>>> [1,2,3]
[1, 2, 3]
>>>

35, 3.14 등 파이썬이 데이터로 인식한다는 의미. happy는 인식 불가능. [1,2,3] 역시 따로 선언해 주지 않아도 데이터의 한 종류로 인식함.

  1. [1,2,3]은 파이썬이 인식하는 데이터의 한 종류.
  2. [1,2,3]은 정수 1,2,3을 묶어 놓은 리스트형 데이터.

지금까지 정리한 데이터의 종류

  1. int
  2. float
  3. 리스트형

03 리스트형 데이터의 연산 : 인덱싱 연산

>>> str1 = [1,2,3,4]
>>> str2 = [5,6,7]
>>> str1 + str2
[1, 2, 3, 4, 5, 6, 7]
>>> str1 * 2
[1, 2, 3, 4, 1, 2, 3, 4]

📌 연산 가능

중요한 연산 기능

  1. 인덱싱
  2. 슬라이싱
>>> n1 = str1[0]
>>> n1
1
>>> n2 = str1[0:2]
>>> n2
[1, 2]

# 값의 수정 또한 가능

연습문제

st = [1,2,3,4,5,6]

st[0], st[5] = st[5], st[0]
print(st)

# 위치 바꾸기!

04 리스트형 데이터의 연산 : 슬라이싱 연산

인덱싱 연산이 리스트에 속한 값들 중 딱 하나만을 대상으로 하는 연산이라면, 슬라이싱 연산은 리스트에 속한 값들 중 하나 이상의 값을 묶어서 이들을 대상으로 하는 연산이다. 그럼 이와 관련해서 다음 예를 보자.

st1 = [1,2,3,4,5,6,7]
st2 = st1[0:3]
print(st2)

📌 st[0]부터 st[2]까지의 값을 꺼내서 st2에 리스트 형태로 저장해라!

st1 = [1,2,3,4,5,6,7]

st1[0:2] = 6,7,8
print(st1)

📌 수정도 가능, 부분 교체, 값의 개수가 같은 필요가 없다.

05 슬라이싱 연산에서 생략 가능한 부분

>>> st = [1,2,3,4,5]
>>> st[0:3] = 0, 0, 0
>>> st
[0, 0, 0, 4, 5]
>>> st = [1,2,3,4,5]
>>> st[:3] = 0,0,0
>>> st
[0, 0, 0, 4, 5]
>>> st = [1,2,3,4,5]
>>> st[3:] = 0,0,0,0,0
>>> st
[1, 2, 3, 0, 0, 0, 0, 0]
>>> st = [1,2,3,4,5]
>>> st[:] = 0,0,0,0,0,0,0,0
>>> st
[0, 0, 0, 0, 0, 0, 0, 0]
>>> st = [1,2,3,4,5]
>>> st = []
>>> st
[]

06 리스트에게 두 칸씩 뛰면서 저장된 값들 꺼내기

>>> st1 = [1,2,3,4,5,6,7,8,9,10,11,12,13,14,15]
>>> st2 = st1[0:15:2]
>>> st2
[1, 3, 5, 7, 9, 11, 13, 15]
>>> st2 = st1[0:15:3]
>>> st2
[1, 4, 7, 10, 13]

연습문제 1

다음 리스트를 대상으로 2와 4를 삭제하는 문장을 만들어 보자. (이 경우 2와 4를 삭제하려는 노력보다 2,3,4를 3 하나로 교체하려는 노력을 해보면 어떨까?

>>> st = [1,2,3,4,5]
>>> st[1:4] = [3]
>>> st
[1, 3, 5]

연습문제 2

다음 리스트를 대상으로 3과 4 사이에 3.5를 넣어보자. (이 경우 값을 끼워 넣을 생각을 하지 말고 일부 내용을 교체할 생각을 해보면 어떨까?)

st = [1,2,3,4,5]

st1 = [1,2,3,4,5]

st1[2:] = [3.5, 4, 5]
print(st1)
st1[0:2] = [1,2,3]
print(st1)

연습문제 3

다음 리스트를 대상으로 2,3,4를 삭제해보자

st = [1,2,3,4,5]

>>> st = [1,2,3,4,5]
>>> st[1:4] = []
>>> st
[1, 5]

이 문제를 해결하는 방법에는 몇 가지가 있는데, 여기서는 빈 리스트로 2,3,4를 대체하는 방법을 선택하자

연습문제 5

다음 리스트를 대상으로 홀수 번째 위치에 저장된 값들만 뽑아서 새로운 리스트를 만들어 변수 nt에 저장하는 코드를 작성해보자. 그러니까 다음 리스트를 통해서 새로 만들어야 할 리스트는 [1,3,5,7,9]이다.

st = [1,2,3,4,5,6,7,8,9,10]

07 스트링형 데이터 : 문자열

리스트형 데이터와 거의 비슷하다.

하지만 리스트와 달리 문자열은 인덱스를 사용하여 그 내용을 바꾸지 못한다.

08 리스트와 for 루프 그리고 문자열과 for 루프

for i in [1,2,3]:
    print(i, end="")
    
for i in 'happy':
    print(i, end="  ")

09 리스트와 문자열을 인자로 전달받는 함수 len

이 함수에 리스트가 담긴 변수 또는 리스트 자체를 전달하면 리스트에 저장된 값의 개수를 세어서 이를 반환해준다. 물론 문자열을 전달하면 문자열을 이루는 문자의 개수를 세어서 이를 반환해준다.

>>> st = [1,2,3,4]
>>> len(st)
4

10 리스트와 문자열을 인자로 전달하고 반환하기

def so_simple(num): # 매개변수 num을 통해 값을 받음 
    return num + 1 # num + 1의 결과 반환

n = so_simple(7) # 함수 호출하면서 7 전달, 그리고 반환되는 값 n에 저장
print(n)

def so_simple(st):
    print(st)
    
n = so_simple([4,5,6])
print(n)

def so_simple2():
    st = [1,2,3,4,5]
    return st

r = so_simple2()
print(r)

# 출력
[4, 5, 6]
[1, 2, 3, 4, 5]

📌 int형 값을 전달받거나 반환하는 함수를 만들 수 있다.

이와 마찬가지로 함수의 매개변수에 리스트로 인자를 전달할 수 있다

뿐만 아니라 함수 내에서 리스트를 반환할 수도 있다

문자열도 된다

연습문제

리스트에 저장되어 있는 모든 값의 합을 계산해서 그 결과를 반환하는 함수를 만들어보자. 예를 들어서 함수의 이름이 sum_all이라 하면, 다음과 같은 실행 결과를 보여야 한다.

>>> sum_all(1,2,3,4,5)
15

인자로 전달된 리스트에 저장되어 있는 모든 값들을 역순으로 출력하는 함수를 만들어보자. 예를 들어서 함수의 이름이 show_reverse라고 하면, 다음과 같은 실행 결과를 보여야 한다.

>>> show_reverse([1,2,3,4,5])
5 4 3 2 1

함수를 잘 만들었다면 다음과 같이 문자열을 대상으로도 동작을 하니, 다음과 같이 문자열을 대상으로도 동작하는지 확인해보기 바란다.

>>> show_reverse("ABCDEF")
F E D C B A
profile
지뢰찾기 개발자

0개의 댓글