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 >> 더이상 꺼낼 값이 없을때 (앞에서 다 꺼냈으니까!)