리스트에 적용할 수 있는 기본 함수
함수 | 설명 |
min() | 리스트 내부에서 최솟값을 찾는다. |
max() | 리스트 내부에서 최댓값을 찾는다. |
sum() | 리스트 내부에서 값을 모두 더한다. |
reversed() 함수로 리스트 뒤집기
리스트에서 요소의 순서를 뒤집고 싶을 때는 reversed() 함수를 사용한다.
list_a = [1,2,3,4,5]
list_b = reversed(list_a)
print(list_b)
print(list(list_b))
위의 list_b를 출력한 값을 보면 <list_reverseiterator object at (주소)>가 출력된 것을 확인할 수 있다.
이는 reversed() 함수의 리턴 값이 'reverseiterator', 즉 이터레이터이기 때문이다.
* 이터레이터 (Iterator)
for 반복자 in 반복할 수 있는 것
반복문은 위와 같은 구조로 구성되는데 여기서 '반복할 수 있는 것'을 이터러블(iterable)이라고 한다.
이터러블은 내부에 있는 요소를 차례차례 꺼낼 수 있는 객체를 의미한다.(ex. 리스트, 딕셔너리, 문자열, 튜플 등)
이터러블 중에서 next() 함수를 적용해 하나씩 꺼낼 수 있는 요소를 이터레이터라고 한다.
이터레이터는 반복문의 매개변수로 전달할 수 있으며, next() 함수로 내부의 요소들을 하나씩 꺼낼 수 있다.
list_a = [1,2,3,4,5]
list_b = reversed(list_a)
print("list_b : ", list_b)
print(next(list_b)) #5
print(next(list_b)) #4
print(next(list_b)) #3
print(next(list_b)) #2
print(next(list_b)) #1
reverse() 함수가 리스트를 바로 리턴하지 않고 이터레이터를 리턴해주는 이유는 메모리의 효율성을 위해서이다.
1만개의 요소가 들어있는 리스트를 복제한 뒤 뒤집어서 리턴하는 것보다 기존에 있는 리스트를 활용해서 작업하는 것이 효율적이라고 판단하기 때문이다.
enumerate() 함수와 반복문 조합하기
리스트 안에 요소를 반복해서 출력하면서 현재 인덱스가 몇번째인지 확인해야 할 때 아래와 같이 코드를 작성할 수 있다.
example_list = ["요소A","요소B","요소C"]
# 방법 1 : item 이용
i = 0
for item in example_list:
print("{}번째 요소는 {}입니다.".format(i,item))
i += 1
#방법 2 : range 이용
j = 0
for j in range(len(example_list)):
print("{}번째 요소는 {}입니다.".format(j, example_list[j]))
파이썬은 이러한 코드를 쉽게 작성할 수 있도록 enumrate() 함수를 제공한다.
enumrate() 함수를 사용하면 for와 in 사이에 반복 변수를 두개 넣을 수 있다.
example_list = ["요소A","요소B","요소C"]
print(enumerate(example_list))
# <enumerate object at (주소)> 출력
print(list(enumerate(example_list)))
#[(0, '요소A'), (1, '요소B'), (2, '요소C')] 출력
for i, value in enumerate(example_list):
print("{}번째 요소는 {}입니다.".format(i,value))
딕셔너리의 items() 함수와 반복문 조합하기
enumerate() 함수와 반복문을 조합해 for i, value in enumerate(리스트) 형태로 반복문을 작성한 것처럼
딕셔너리는 items() 함수를 이용해 키와 값을 조합해서 쉽게 반복문을 사용할 수 있다.
example_dictionary = {
"키A" : "값A",
"키B" : "값B",
"키C" : "값C"
}
print(example_dictionary.items())
# dict_items([('키A', '값A'), ('키B', '값B'), ('키C', '값C')]) 출력
for key, element in example_dictionary.items():
print("dictionary[{}] = {}".format(key,element))
# dictionary[키A] = 값A ... 출력
리스트 내포(list comprehensions)
반복문을 사용해 리스트를 재조합하는 경우에 대해 알아보자.
array = []
for i in range(0,20,2):
array.append(i*i)
print(array) # [0,4,16,36,64,100,144,196,256,324]
위의 코드는 0부터 20사이의 짝수를 구한 뒤 제곱한 값으로 새로운 리스트를 만든다.
위 코드를 리스트 내포를 이용해 아래와 같이 표현할 수 있다.
array = [i*i for i in range(0,20,2)]
print(array) # [0,4,16,36,64,100,144,196,256,324]
리스트 내포는 최종결과를 앞에 작성하여 리스트를 재조합한다.
리스트 이름 = [표현식 for 반복자 in 반복할수있는것]
리스트 이름 = [표현식 for 반복자 in 반복할수있는것 if 조건문]
구문 내부에 여러줄 문자열을 사용할 때 발생하는 문제 해결방법
1) 괄호로 문자열 연결하기
괄호 () 내부에 문자열을 여러개 입력하면 모든 문자열을 합친 새로운 문자열이 만들어진다.
중간에 줄바꿈을 원하는 경우에는 마지막을 제외한 문자열 뒤에 \n을 입력한다.
test = (
"이렇게 여러줄로"
"나눠서 입력해도\n"
"하나의 문자열로 연결됩니다."
)
print(test) # 이렇게 여러줄로나눠서 입력해도
# 하나의 문자열로 연결됩니다.
print(type(test)) #<class 'str'>
2) 문자열의 join() 함수 이용하기
문자열.join(문자열로 구성된 리스트a, 리스트b)
join()함수를 이용하면 앞에 있는 문자열을 이용해 리스트의 요소를 문자열로 연결한다.
print("::".join(["1","2","3"])) #1::2::3
number = 50
if number %2 == 0:
print("\n".join([
"문자열은 {}입니다.", # 문자열은 50입니다.
"{}은 짝수입니다.", # 50은 짝수입니다.
"줄바꿈이 실행됩니다." # 줄바꿈이 실행됩니다.
]).format(number,number))
'Spec UP - Backend > 혼자 공부하는 파이썬' 카테고리의 다른 글
chap_05-2. 함수의 활용 (0) | 2023.11.13 |
---|---|
chapter_05-1. 함수 만들기 (0) | 2023.10.27 |
chap_04-3. 범위 자료형과 while 반복문 (0) | 2023.10.13 |
chap_04. 반복문 (0) | 2023.09.14 |
chap_03. 조건문 (0) | 2023.08.31 |
댓글