작성했던 글 모바일로 처음 읽어봤는데,
소스코드가 모바일이랑 호환이 잘 안되는듯 하다.
모든 코드가 1줄로 출력이 된다😂
티스토리에 작성한 IT글은 PC에서만 읽는걸로...
reversed( ) 함수
#reversed( )함수의 성격
temp = reversed([1, 2, 3, 4, 5, 6])
for i in temp :
print("첫 번째 반복문: {}".format(i))
for i in temp :
print("두 번째 반복문: {}".format(i))
위 코드를 실행하면 첫 번째 반복문만 실행된다.
그 이유는 reversed( )함수의 결과가 제너레이터이기 때문이다.
reversed( )함수 + 반복문 조합하면 함수 결과를 여러 번 활용하지 않고 for 구문 내부에 함수를 곧바로 넣어서 사용한다.
그래서 리스트를 뒤집어야 할 때 마다 가져와서 쓴다.
확장 슬라이싱
numbers = [1, 2, 3, 4, 5]
print(numbers) #출력결과 : [1, 2, 3, 4, 5]
print(numbers[::-1]) #출력결과 : [5, 4, 3, 2, 1]
리스트 뒤에 [::-1]을 붙여서 리스트 내용을 뒤집을 수 있다.
이걸 확장 슬라이싱이라고 부름
원본에는 변화를 주지 않는 코드이며 문자열에도 사용 가능하다.
enumerate( ) 함수와 반복문 조합하기
example_list = ["요소A", "요소B", "요소C"]
#현재 인덱스가 몇 번째인지 확인하는 방법1
i = 0
for item in example_list:
print("{}번째 요소는 {}입니다.".format(i, item))
i += 1
#현재 인덱스가 몇 번째인지 확인하는 방법2
for i in range(len(example_list)):
print("{}번째 요소는 {}입니다.".format(i, example_list[i]))
for문을 적절히 사용하여 현재 인덱스가 몇 번째인지 확인할 수 있다.
이 코드 작성할때 들여쓰기 에러(IndentationError : unindent does not match any outer indentation level)이 계속 출력되었다. 들여쓰기 틀린거 없는데도 계속 에러가 떠서 다시 작성해봤더니 잘 작동했다. 복사 붙여넣기 하면서 생긴 오류인가보다.
아무튼 다소 복잡(?)할 수 있는 인덱스 몇 번째인지 출력하는 코드는 enumerate( ) 함수로 간단히 표현이 가능하다.
example_list = ["요소A", "요소B", "요소C"]
#enumerate( )함수를 list( ) 함수로 강제 변환
print(list(enumerate(example_list)))
#for 반복문과 enumerate( )함수 조합하여 사용
for i, value in enumerate(example_list):
print("{}번째 요소는 {}입니다.".format(i,value))
리스트를 enumerate( )함수를 사용해서 보면 리스트로 출력이 되지 않고 이상한 문구로 출력된다. 이건 이터레이터라고 하는데.. 해당 내용은 잘 모르겠고, 지금 알고 싶지도 않다. 그래서 다시 리스트화 시켜주어야한다.
아무튼 enumerate( )함수를 list( )로 다시 변환하여 보면 (n번째, n번째요소)가 리스트의 요소로 쏙쏙 들어가 있다.
위 코드처럼 반복 변수를 for 반복문과 조합해 사용이 가능하다.
딕셔너리의 items( ) 함수와 반복문 조합
enumerate( )함수와 반복문 조합을 해서 쉽게 인덱스를 출력했던 것 처럼 딕셔너리에도 이와 비슷한 기능을 items( )함수가 해준다.
example_dictionary ={
"키A": "값A",
"키B": "값B",
"키C": "값C"
}
print("items( ):", example_dictionary.items())
#출력결과 : items( ): dict_items([('키A', '값A'), ('키B', '값B'), ('키C', '값C')])
for key, element in example_dictionary.items():
print("dictionary[{}] = {}".format(key, element))
'''
출력결과
dictionary[키A] = 값A
dictionary[키B] = 값B
dictionary[키C] = 값C
'''
딕셔너리의 items( ) 함수를 사용하여 반복문과 함께 사용한 예시는 위 코드 보면 이해 될 것이다.
리스트내포
파이썬으로 프로그램을 만들 때 반복문을 사용하여 리스트를 재조합 하는 경우가 많다.
array = []
for i in range(0, 20, 2):
array.append(i * i)
print(array) #출력결과 : [0, 4, 16, 36, 64, 100, 144, 196, 256, 324]
위 코드는 빈 리스트를 만든 뒤 반복문으로 하나하나 요소를 추가해주는 방식이다.
이런 형태의 코드를 파이썬에서는 한 줄로 표현이 가능하다. 이 것을 리스트 내포라고 부른다.
array = [i*i for i in range(0,20,2)]
print(array) #출력결과 : [0, 4, 16, 36, 64, 100, 144, 196, 256, 324]
리스트 내포의 형태는
리스트 이름 = [ 표현식 for 반복자 in 반복할 수 있는 것 ] 이다.
리스트를 선언하면서 바로 원하는 형태로 작성이 가능하다.
'반복할 수 있는 것' 뒤에 if 구문을 넣어 조건을 걸어줄 수도 있다.
리스트 이름 = [ 표현식 for 반복자 in 반복할 수 있는 것 if 조건문 ]
'자기계발 > Python' 카테고리의 다른 글
[Python] 기본12. 재귀함수와 메모화 (0) | 2022.03.07 |
---|---|
[Python] 기본11. 함수(가변, 기본, 키워드 매개변수) (0) | 2022.03.06 |
[Python] 기본9. range()와 while 반복문 (0) | 2022.03.02 |
[Python] 기본8. 딕셔너리와 for()반복문 (0) | 2022.03.01 |
[Python] 기본7. 리스트와 for()반복문 (0) | 2022.02.27 |