본문 바로가기
Python/개념익히기

문자열, 리스트, 딕셔너리와 관련된 기본 함수

by ADELA_J 2023. 4. 2.

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

  a. min() : 리스트 내부에서 최솟값 / max() : 최대값 / sum() : 값을 모두 더함. 

    ▶ min max 함수를 안쓰고 최소값 최대값 구할때 : 

  b. reversed() : 함수로 리스트 뒤집기 . 요소의 순서 뒤집기 

      ▶ 함수의 결과가 제너레이터이기 때문에 for 구문 내부에 함수를 곧바로 넣어서 사용

      ▶ print(reversed(리스트))) : 로 하면 결과  x

          ▷ print(list(reversed(리스트))) : 행동할? 실행할? 명령 함수는 따로 적어줘야함. 

               print(a) 했을때 a의 값이 나오지만 이거는 제너레이터라서 안됨. 

               : 결과값을 되돌려주는게 아니라 객체를 되돌려주기 때문에. 

#리스트 선언하고 뒤집기
a = [1,2,3,4,5]
a_reversed = reversed(a)

#출력
print("#reversed()함수")
print("reversed([1,2,3,4,5]):", a_reversed)
print("list(reversed([1,2,3,4,5])):", list(a_reversed))
print()

#reversed()함수
print("#reversed()함수와 반복문")
print("for i in reversed([1,2,3,4,5]:")
for i in reversed(a):
    print("-", i)

 

  c. enumerate() : 하나하나꺼내서 나열해주는 함수.

                            알아서 번호표를 하나하나 붙여주기 때문에 인덱스번호를 적어줄 필요없음. 

      ▶ for문에서는 키와 값 따로 변수를 2개 넣을 수 있다. 

          ▷ 이것도 결과값을 되돌려주는게 아니라 객체를 되돌려주기 때문에

                  print(enumerate(ex_list))이런식으로 못씀. print(list(enumerate(ex_list)))이렇게써야함.

ex_list=["요소A", "요소B", "요소C"]
for i, v in enumerate(ex_list):
	print("{}번째 요소는 {}입니다.".format(i,v))

 

 

2. 딕셔너리의 함수

  a. items() : 딕셔너리의 키와 값을 꺼내기. 리스트의 enumerate() 함수랑 같은거. 

#변수 선언
ex_dict={
    "키A":"값A",
    "키B":"값B",
    "키C":"값C",
}

#딕셔너리의 items() 함수 결과 출력
print("#딕셔너리의 items()함수")
print("items():", ex_dict.items())
print()

#for반복문과 items()함수와 반복문 조합
print("딕셔너리의 items()함수와 반복문 조합하기")
for k, e in ex_dict.items():
    print("dict[{}]={}".format(k,e))

  b. 리스트 내포(list comprehensions) :

      ▶ 리스트를 재 조합할때 쓰는거.

       ex. 기존리스트에서 a를 빼고 재조합해주세요, 제곱해서 새로운 리스트를 만들어주세요. etc

      ▶ 리스트 = [표현식 for 반복자(변수) in 반복할수 있는 것]

           리스트 = [표현식 for 반복자(변수) in 반복할수 있는 것 if 조건문]

#문제: 0부터 20사이의 짝수를 구한 뒤, 제곱해서 새로운 리스트 만들기
#변수 선언
array = []

#반복문 적용
for i in range(0,20,2):
    array.append(i*i)

#출력
print(array)


print()
#이문제를 리스트 내포했을때
array = [i*i for i in range(0,20,2)]
print(array)

 * array = [i*i for i in range(0,20,2)] >>> 리스트=[표현식 for 반복자 in 반복할 수 있는것]

  **리스트 내포해도 어쨌든 같은 값이 출력됨.

#리스트 선언
array=["사과", "자두", "초콜릿", "바나나", "체리"]
output=[fruit for fruit in array if fruit != "초콜릿"]

print(output)

 * [표현식 for 반복자 in 반복할수있는것 if 조건문]

   ▶ if 구문을 넣어 조건을 조합할 수도 있음. ( 조건에서 True를 모아 새로 만듦)

   

3. 문자열

  a. 괄호로 문자열 연결하기 : 괄호 내부에 여러개 입력하면 합쳐져 문자열 만들어짐

test = (
    "이렇게 입력해도"
    "하나의 문자열이 되어 "
    "만들어집니다! "
    "짠!"
)

print(test)
print("type(test):", type(test))

  b. 문자열. join(문자열로 구성된 리스트)  :   리스트의 요소를 문자열로 연결함.

#간단 예시
print("::".join(["1", "2", "3", "4", "5"]))

#조건문을 활용한 예시
n = int(input("정수입력>"))

if n % 2 == 0:
    print("\n".join([
        "입력한 문자열은 {}입니다.",
        "{}는 짝수입니다."
        ]).format(n, n))
else:
    print("\n".join([
        "입력한 문자열은 {}입니다.",
        "{}는 홀수입니다."
        ]).format(n, n))

 

4. 이터레이터, iterator

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

    ▷ 반복할 수 있는 것 = 이터러블 iterable,  내부에 있는 요소를 차례차례 꺼낼수 있는 객체를 의미. 

 ▶next() 함수를 적용한다면 하나하나 꺼낼 수 있는 요소를 이터레이터라고 함.

n = [1,2,3,4,5,6]
r_n = reversed(n)

print("reversed_n:",r_n)
print(next(r_n))
print(next(r_n))
print(next(r_n))
print(next(r_n))
print(next(r_n))
print(next(r_n))
print(next(r_n))

* reversed() 함수의 리턴값이 바로 'reverseiterator'로 이터레이터임. 그러다보니 하나하나 꺼내서 쓰는거, 

* 리스트를 복제해서 뒤집어서 리턴하는 것 보다 기존에 있던 리스트를 활용해서 작업하는 것이 훨씬 효율적.

*StopIteration >> 더이상 꺼낼 값이 없을때 (앞에서 다 꺼냈으니까!)

'Python > 개념익히기' 카테고리의 다른 글

튜플  (0) 2023.04.04
함수  (0) 2023.04.03
while 반복문  (0) 2023.04.01
범위(range)  (0) 2023.03.29
딕셔너리  (0) 2023.03.28