자기계발/Python

[Python] 기본10. 문자열, 리스트, 딕셔너리와 관련된 기본 함수

호등 2022. 3. 4. 00:17
반응형

작성했던 글 모바일로 처음 읽어봤는데,

소스코드가 모바일이랑 호환이 잘 안되는듯 하다.

모든 코드가 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 조건문 ]

반응형