줄을 바꾸지 않고 출력하는 방법
for i in [1,2,3]:
print(i, end="_")
# 출력
1_2_3_
📌 end = ""출력 마치고 나면 줄 바꾸는 것 대신에 를 출력해 주세요! 라는 뜻
>>> 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] 역시 따로 선언해 주지 않아도 데이터의 한 종류로 인식함.
지금까지 정리한 데이터의 종류
>>> 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]
📌 연산 가능
중요한 연산 기능
>>> 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)
# 위치 바꾸기!
인덱싱 연산이 리스트에 속한 값들 중 딱 하나만을 대상으로 하는 연산이라면, 슬라이싱 연산은 리스트에 속한 값들 중 하나 이상의 값을 묶어서 이들을 대상으로 하는 연산이다. 그럼 이와 관련해서 다음 예를 보자.
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)
📌 수정도 가능, 부분 교체, 값의 개수가 같은 필요가 없다.
>>> 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
[]
>>> 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]
다음 리스트를 대상으로 2와 4를 삭제하는 문장을 만들어 보자. (이 경우 2와 4를 삭제하려는 노력보다 2,3,4를 3 하나로 교체하려는 노력을 해보면 어떨까?
>>> st = [1,2,3,4,5]
>>> st[1:4] = [3]
>>> st
[1, 3, 5]
다음 리스트를 대상으로 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)
다음 리스트를 대상으로 2,3,4를 삭제해보자
st = [1,2,3,4,5]
>>> st = [1,2,3,4,5]
>>> st[1:4] = []
>>> st
[1, 5]
이 문제를 해결하는 방법에는 몇 가지가 있는데, 여기서는 빈 리스트로 2,3,4를 대체하는 방법을 선택하자
다음 리스트를 대상으로 홀수 번째 위치에 저장된 값들만 뽑아서 새로운 리스트를 만들어 변수 nt에 저장하는 코드를 작성해보자. 그러니까 다음 리스트를 통해서 새로 만들어야 할 리스트는 [1,3,5,7,9]이다.
st = [1,2,3,4,5,6,7,8,9,10]
리스트형 데이터와 거의 비슷하다.
하지만 리스트와 달리 문자열은 인덱스를 사용하여 그 내용을 바꾸지 못한다.
for i in [1,2,3]:
print(i, end="")
for i in 'happy':
print(i, end=" ")
이 함수에 리스트가 담긴 변수 또는 리스트 자체를 전달하면 리스트에 저장된 값의 개수를 세어서 이를 반환해준다. 물론 문자열을 전달하면 문자열을 이루는 문자의 개수를 세어서 이를 반환해준다.
>>> st = [1,2,3,4]
>>> len(st)
4
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