파이썬 문법 II

매일 공부(ML)·2022년 1월 16일
0

Python

목록 보기
34/38

range

제너레이터의 방식을 활용하는 대표함수로 for문에서 잘 쓰입니다. for문에서 사용할 경우 내부적으로 다음 숫자를 생성해낸다. 메모리 점유율에서 확실한 이점을 가질 수 있다.

list(range(5)) # [0, 1, 2, 3, 4] 

range(5) # range(0, 5) 

type(range(5)) # <class 'ran ge'> 

for i in range(0, 5):
    
    print(i,end=' ')  # 0 1 2 3 4 

enumerate

열거하다라는 뜻의 함수로 여러 가지 자료형(list,set,tuple등)을 인덱스로 포함한 enumerate객체로 리턴한다.

a = [1,2,3,2,45,2,5] 
a  # [1, 2, 3, 2, 45, 2, 5]

enumerat e(a) # <enumerat e obj ect at 0x1010f 83f 0> 

list(enumerat e(a)) 

#리스트로 결과를 받을 수 있고 인덱스를 자동으로 부여해준다.

[(0, 1), (1, 2), (2, 3), (3, 2), (4, 45), (5, 2), (6, 5)]
# a = ['a1', 'b2', 'c3']일 때 리스트의 인덱스와 값 출력

# 하나의 방식이 될 순 있으나 a[i 조회 작업과 신체 길이 조회하여 루프 처리하는 형태이지만 깔끔하진 않음]
for i in range(len(a)): 
    print( i, a[i]) 

    
# 값은 깔끔하나 인덱스를 위한 변수 설정을 해야 하기에 아쉽

i = 0 
for v in a: 
    print(i, v) 
    i += 1 
    
# 인덱스와 값 모두 깔끔하게 처리

for i, v in enumerate(a) : 

    print(i, v) 
    

// 나눗셈 연산자

몫을 구하는 연산자입니다.

# II 나눗셈 연산자는 int ( a / b )와 동일하다 
5 // 3 
1 

print

디버깅할 때 가장 자주 쓰는 명령어로 출력결과를 보여주고 항상 줄바꿈을 하여 긴 루프의 값을 반복적으로 출력하는데 이때, end 파라미터를 공백으로 처리하여 줄바꿈방지

print('A1', 'B2') # A1,B2

print('aa', end=' ') 
print(' bb' )


# join()함수 이용하여 리스트 출력 시 묶기

a = ['A', 'B'] 
print(' '.join(a)) 

A B

# f-string(formated string literal)

idx = 1
fruit = "Apple"

print(f'{idx + 1}: {fruit}' ) 
2: Apple

Pass

pass는 IndentationError를 막는 역할을 하지만 실제 연산에서는 널 연산으로 아무것도 하지 않는다.

class MyClass (object): 
    def method_a(self): 
# 여기에 pass 추가 
        pass 

    def method_b(self): 
        print("Method B") 
c = MyClass( ) 

locals

딕셔너리를 가져오는 메소드로 업데이트 또한 가능하다. 로컬에 선언된 모둔 변수를 조회할 정도로 강한 명령어여서 디버깅 시 도움이되고 로컬 영역에 제한하여 정보 조회가 가능하기 대문에

클래스의 특정 메소드 내부에서나 함수 내부의 로컬 정보를 조회해서 잘못 선언 부분 없는지 확인하는 용도로 활용 가능하다.

이로 인해 변수명을 일일이 찾아낼 필요없이 로컬 스코프에 정의된 모든 변수를 출력하기 때문에 좋다.

import pprint 
pprint.pprint( locals( ) ) 

{'nums' : 12, 7, 11, 15], 
'pprint' : <module 'pprint' from '/usr/ lib/ python3.8/ pprint.py'>, 
'self' : < __ main__.Solution object at Ox7f0994769d90>, 
' target ' : 9} 

변수명과 주석

변수명과 주석을 적절하게 달면 가독성이 높아진다.

def numMatchingSubseq(self, S:str, words: List[str]) -> int:
    
    matched_count = 0
    
    for word in words:
        
        pos = 0
        
        for i in range(len(word)):
            
            # Find matching position for each character.
            
            found_pos = S[pos:].find(word[i])
            if found_pos < 0:
                
                matched_count -=1
                break
                
            else: # If found, take step position forward.
                
                pos += found_pos +=1
                
        matched_count +=1
        
    return matched_count
profile
성장을 도울 아카이빙 블로그

0개의 댓글