2022년 7월 28일 목요일

파이썬 정리 1

 1. 클로저 

x = 10  # 전역변수

def foo():

    global x 

    x = 11

    print(x)

foo()

print(x) # 출력


파이썬은 그냥 바로 선언하면 전역변수임

그 전역변수를 함수에서 사용하려면 global 로 지정해야됨


2. 언더바 사용

값을 무시하고 싶을때

x,_,y = 1,2,3 

이렇게 선언하면 중간의 2 값은 무시하고 

x는 1, y는 3으로 선언됨

x,*_,y = 1,2,3,4,5

이렇게하면 중간 값들은 다 생략하고 1, 5 만 선언됨


for을 사용할때 index가 필요 없을떄

for _ in range(10):

-> 인덱스가 필요없고 그냥 10번 반복하고 싶을때 


메소드에 _가 붙을때

-> 외부 사용자가 사용하지 말라는 권유의 문법 / 만약 import * 를 하면 _가 앞에붙어있는 변수나 메소드는 호출이 되지 않음

-> 매직 메소드 / 클래스를 작성할때 __init__ , __str__ 등의 사용



3. dfs , bfs 파이썬으로 구현 


def bfs(v):

    q = deque()

    q.append(v)

    visit_list[v] = 1

    while q:

        v = q.popleft()

        print(v, end = " ")

        for i in range(1, n + 1):

            if visit_list[i] == 0 and graph[v][i] == 1:

                q.append(i)

                visit_list[i] = 1

#스택

def dfs(v):

    q = deque()

    q.append(v)


    while q:

        v = q.pop()

        if visit_list2[v] == 0:

            visit_list2[v] = 1

            print(v, end = " ")

            temp = deque()

            for i in range(1, n + 1):

                if visit_list2[i] == 0 and graph[v][i] == 1:

                    temp.append(i)

            temp.reverse()

            q = q + temp


# 재귀
def dfs(v):

    visit_list2[v] = 1
    print(v, end = " ")
    for i in range(1, n + 1):
        if visit_list2[i] == 0 and graph[v][i] == 1:
            dfs(i)

4. dict 
초기화
data = {}

데이터 접근
data["aa"] = "zxc"
data["bb"] = 1
print(data["aa"])

데이터 확인
data.get("aa") -->> "zxc"
data.get("cc") -->> None 반환
"aa" in data --> true
"cc" in data --> false

데이터 삭제
del data["aa"]

순회
for keys in data:
~~~
for로 돌면 key값들을 반환함 

for key, value in data.items():
~~
items를 사용하면 value도 반환

사전 병합
{ **data1, **data2 }


5. DP 구현


import sys
read = sys.stdin.readline

data = {}

def dp(x):
    if x == 1:
        return 1
    if x == 2:
        return 1
    if data.get(str(x)):
        return data[str(x)]

    data[str(x)] = dp(x-1) + dp(x-2)
    return data[str(x)]

print(str(dp(50)))



flutter 기본 개념 1

  Scaffold  - 화면 뼈대 역할  - 기본적으로 AppBar body floatingActionButton 같은걸 배치해줌  return Scaffold (       appBar : AppBar ( title : const Text ...