2023-07-30 14:10:30
728x90
728x90

리스트에 적용할 수 있는 기본 함수: min(), max(), sum()

min(), max(), sum() 함수들은 리스트를 매개변수로 넣어 사용하는 매우 기본적인 함수이다.

함수 설명
min() 리스트 내부에서 최솟값을 찾는다.
max() 리스트 내부에서 최댓값을 찾는다.
sum() 리스트 내부에서 값을 모두 더한다.

 

reversed() 함수로 리스트 뒤집기

reversed() 함수는 리스트에서 요소의 순서를 뒤집고 싶을 때 사용한다. reversed() 함수의 매개변수에 리스트를 넣으면 리스트를 뒤집을 수 있다.

#리스트를 선언하고 뒤집는다.
list_a = [1, 2, 3, 4, 5]
list_reversed = reversed(list_a)

 

enumerate() 함수와 반복문 조합하기

리스트의 요소를 반복할 때 현재 인덱스가 몇 번째인지 확인해야 하는 경우가 많은데, 파이썬은 이런 코드를 쉽게 작성할 수 있도록 enumerate() 함수를 제공한다.

#변수 선언
example_list = ["요소A", "요소B", "요소C"]
#그냥 출력
print("# 단순 출력")
print(example_list)
print()
# enumerate() 함수를 적용해 출력
print("# enumerate() 함수 적용 출력")
print(enumerate(example_list))
print()
#list()함수로 강제 변환해 출력
print("# list() 함수로 강제 변환 출력")
print(list(enumerate(example_list)))
print()
#for 반복문과 enumerate() 함수 조합해서 사용하기
print("# 반복문과 조합하기")
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",
}
# 딕셔너리의 items() 함수 결과 출력하기
print("# 딕셔너리의 items() 함수")
print("items():", example_dictionary.items())
print()
# for 반복문과 items() 함수 조합해서 사용하기
print("# 딕셔너리의 items()함수와 반복문 조합하기")
for key, element in example_dictionary.items():
    print("dictionary[{}] = {}".format(key, element))

 

리스트 내포

프로그램을 만들 때는 반복문을 사용해 리스트를 재조합하는 경우가 많다. 다음코드는 range(0, 20, 2)로 0부터 20 사이의 짝수를 구한 뒤, 제곱해서 새로운 리스트를 만든다.

 

※ 반복문을 사용한 리스트 생성

# 변수 선언
array = []
#반복문 적용
for i in range(0, 20, 2):
    array.append(i * i)
    #출력
print(array)

파이썬 프로그래밍 언어는 이를 한 줄로 작성할 수 있는 방법을 제공한다.

 

※ 리스트 안에 for문 사용하기

# 리스트를 선언
array = [i * i for i in range(0, 20, 2)] #최종 결과를 앞에 작성한다.
# 출력
print(array)

이런 구문을 리스트 내포(list comprehensions)라고 부른다. 리스트 내포는 다음과 같은 형태로 사용한다

리스트 이름 = [표현식 for 반복자 in 반복할 수 있는것]
#if 구문 넣어 조건을 조합하기
리스트 이름 = [표현식 for 반복자 in 반복할 수 있는것 if 조건문]
# 리스트를 선언
array = ["사과", "자두", "초콜릿", "바나나", "체리"]
output = [fruit for fruit in array if fruit != "초콜릿"]
# 출력
print(output)

 

구문 내부에 여러 줄 문자열을 사용했을 때 문제점

조건문과 반복문에는 들여쓰기를 한다. 그런데 구문 내부에 여러 줄의 문자열을 만들면 예상치 못한 실행 결과가 나올 때가 있다. 여러줄 문자열 앞에 있는 들여쓰기가 문자열에 포함되어 들어가는 것을 볼수 있다. 이와 같이 예상치 못한 들여쓰기를 막으려면 다음과 같이 입력한다.

 

※if 조건문과 여러 줄 문자

# 변수 선언
number = int(input("정수 입력: "))
# if 조건문으로 홀수 짝수를 구분
if number % 2 == 0:
    print("""입력한 문자열은 {}입니다.
{}는(은) 짝수입니다.""".format(number, number))
else:
    print("""입력한 문자열은 {}입니다.
{}는(은) 홀수입니다.""".format(number, number))

실행 결과는 제대로 나오지만 코드가 이상한 구조를 가지게 되었다. 여러 줄 문자열을 if 조건문, for 반복문, while 반복문 등의 구문과 함께 사용하면 모두 이런 문제가 발생한다. 따라서 구문 내부에서는 여러 줄 문자열을 거의 사용하지 않는 편이다. 하지만 그렇다고 다음과 같이 문자열을 한줄로 길게 적으면 코드가 복잡해진다.

 

※ if 조건문과 긴 문자열

# 변수를 선언
number = int(input("정수 입력 :"))
#if 조건문으로 홀수 짝수를 구분
if number % 2 == 0:
    print("입력한 문자열은 {}입니다.\n{}는(은) 짝수입니다.".format(number, number))
else:
    print("입력한 문자열은 {}입니다.\n{}는(은) 홀수입니다.".format(number, number))

이러한 여러 줄 문자열과 구문을 함께 사용할 때 발생하는 문제를 해결하는 방법은 많다. 해결 방법 중 몇 가지를 살펴보면서 파이썬의 기능을 추가로 알아보자.

 

※ 괄호로 문자열 연결하기

# 변수 선언
number = int(input("정수 입력: "))
# if 조건문으로 홀수 짝수를 구분한다.
if number % 2 == 0:
    print((
        "입력한 문자열은 {}입니다.\n"
        "{}는(은) 짝수입니다."
    ).format(number, number))
else:
    print((
        "입력한 문자열은 {}입니다.\n"
        "{}는(은) 홀수입니다."
    ).format(number, number))

 

※ 문자열의 join() 함수

문자열의 join() 함수로 해결하는 경우도 있다. join() 함수는 다음과 같은 형태로 사용한다.

문자열.join(문자열로 구성된 리스트)

join() 함수는 리스트의 요소를 문자열로 연결한다. 이를 활용하면 여러 줄 문자열과 if 구문을 조합했을 때의 문제를 해결할 수 있다.

# 변수 선언
number = int(input("정수 입력: "))
# if 조건문으로 홀수 짝수를 구분
if number % 2 == 0:
    print("\n".join([
        "입력한 문자열은{}입니다.",
        "{}는(은) 짝수입니다."
    ]).format(number, number))
else:
    print("\n".join([
        "입력한 문자열은 {}입니다.",
        "{}는(은) 홀수입니다."
    ]).format(number, number))

 

이터레이터

반복문의 구문은 다음과 같다.

for 반복자 in 반복할 수 있는것

여기서 '반복할 수 있는것'을 프로그래밍 용어로 이터러블(iterable)이라고 한다. 즉 이터러블 내부에 있는 요소들을 차례차례 꺼낼 수 있는 객체를 의미한다. 리스트, 딕셔너리, 문자열, 튜플 등은 모두 내부에서 요소를 차례차례 꺼낼 수 있으므로 이터러블이다.

이터러블 중에서 next() 함수를 적용해 하나하나 꺼낼 수 있는 요소를 이터레이터(iterator)라고 하는데 이터레이터의 예를 살펴보자.

# 변수 선언
numbers = [1, 2, 3, 4, 5, 6]
r_num = reversed(numbers)
# reversed_numbers를 출력
print("reversed_numbers :", r_num)
print(next(r_num))
print(next(r_num))
print(next(r_num))
print(next(r_num))
print(next(r_num))

 

728x90

'Python' 카테고리의 다른 글

파이썬 클래스  (0) 2023.07.30
파이썬 함수  (0) 2023.07.30
파이썬 범위 자료형과 while 반복문  (0) 2023.07.30
파이썬 딕셔너리와 반복문  (0) 2023.07.30
파이썬 반복문  (0) 2023.07.29