본문 바로가기
Programming/Python

[Python] set, dict, If, for, while

set (type = set)

set: {}로 들어간 집합개념

 

특징: 중복 허용X. 중복시, 하나로만 출력만 함!

집합1.intersection(집합2)   =  집합1&집합2  -> 교집합

집합1.union(집합2)  = 집합1|집합2       -> 합집합

집합1.difference집합2  =      -> 차집합

 

 

unpacking(한번에 변수지정) 을 변수 동일시 안하고 쓰는 법 : * 사용

ex)

  • a, b, *c = (0, 1, 2, 3, 4, 5)
  • a -> 0
  • b  -> 1
  • c    -> [2, 3, 4, 5]

*a: 좌측 나머지, b 1개 c 1개로 자동 지정.

*b: 가운데 8개

 

*는 여러 값을 한번에 받을 때 사용

  ex) def func(*args)  입력시 여러 변수를 한 번에 입력 可

                     **  <- dict 데이터 구조 받을 때 2개 필요  

                      *  <- list 구조의 내용을 하나하나 다 받을 때, 리스트지정 변수 앞에 * 둔다. (unpacking)

# 패킹 : 여러 개 객체를 하나로 합침
 
def func(*args):
      print(args)
      print(type(args))func(1, 2, 3, 4, 5, 6, 'a', 'b')
 
def kwpacking(**kwargs):
     print(kwargs)
     print(type(kwargs)kwpacking(a=1, b=2, c=3)
# 언패킹 : 여러 객체 포함하는 하나의 객체를 푸는 것.
 
def sum(a, b, c):
    return a + b + cnumbers = [1, 2, 3]print(sum(*numbers))

 

 

 

============================================================ 중요한 건 list와 dict

dict (type = dict)                            key        value

dict: {} 사용, key value 형식 { "데이터": "data", . . . }       

key와 value는 type 제한X. 즉, dict 안에 list, tuple dict 등 삽입도 可

dict 지정 변수[key]  <- value값 도출        (단, value값으로 key값 찾기 불가)

 

dict key value 추가 ->  변수[key] = value  

dict key value 여러 개 추가 -> 기존변수.update(해당 리스트)           해당 리스트의 dict를 따로 정의하고 update!

dict 내용 변경 -> 변수[기존key] = 수정된 value     

dict 내용 제거 -> del 변수[key]

 

변수.keys()          key값만 출력

변수.values()      value값만 출력

변수.items()     둘 다 출력                    - 나중에 for문에서 items 필요

변수.clear()      데이터 모두 제거

 

zip()함수: key, value만 모인 각 데이터를 dict로 합칠 때  사용

zip만 단순히 하면 메모리 주소만 나옴 (zip at ~~~)

-> 변수 = dict(zip(keys,values))  로 지정해서 만듦.  안의 두 데이터 개수가 다르면 있는 것만 매칭됨. (오류X)

 

================================================================

예제로 보는 if 개념         *끝에 : 붙이는 것 잊지 말기!      elif 여러개 可

Ex)   (if와 else는 같은 라인이여야 함)

if x >= 90:

    if x>= 95:

          print("A++")

    else:

          print("A--")

elif x >= 80:

    print("B")

elif x >= 70:

    print("C")

elif x >= 60:

    print("D")

else:

    print("F")

 

================================================================

for: 반복을 위해 주로 사용                형식: for 변수 in 열거형 변수(list, tuple, set, dict):          *끝에 : 붙이는 것 잊지 말기! 

주로 for x in range(len(특정 집군)): 빈번 사용

기본형은 for x in 특정집군:

 

 

ex)

for x in [1, 2, 3, 4, 5]:

   print(x)   -> 하나하나 모든 원소 열거

 

range와 빈번히 같이 사용                  <FYI> range(start, end, step)    step 기본은 1,  최소형태는 start=0, range(end)

ex)                                                                     step = -1 <- 역순으로 range 설정

for x in range(0, 6):

     print(x)     -> 0에서 5까지 나열.

 

<fyi> 중첩 for문 예제

range안에 len을 넣어서 쓴다.

Ex)

names = ['James', 'Robert', 'Lisa', 'Mary'] 
scores = [95, 96, 97, 94]

 

for k in range(len(names)):
    print(names[k], scores[k])           -> 이름 , 점수   같이 출력된 것이 하나하나 나옴

 

for name, score in zip(names, scores):

    print(name, score)                      -> zip으로 해도 같은 결과가 나온다

 

                                                                                                                            중첩 for는 리스트 안 리스트 추출할때 씀

list 생성을 위한 for

ex)

numbers = [1,2,3,4,5]
square = []

for i in numbers:
    square.append(i**2)                <- numbers의 제곱값을 square에 원소로 추가.
      
print(square)    ->    [1, 4, 9, 16, 25]

 

해당 예제는 list 컴프리 핸션으로 똑같이 可

numbers = [1,2,3,4,5]
square = [i**2 for i in numbers]
print(square)    ->    [1, 4, 9, 16, 25]

 

 

=================================================================

while: 무한 반복              *끝에 : 붙이는 것 잊지 말기! 

ex)  i=0; sum =0

while sum < 10:

         i = i + 1

        sum = sum + i

        print(i, sum)

 

while은 무한루프 可 -> PC 성능 저하 -> 지양하는 코드 -> break , continue 명령어 사용

 

ex) k = 0

while True:

       k = k+1

       print(k)           -> 여기까지만 쓰면 무한반복

       if k > 3:

            break           <- 무한반복 제어

 

       print(k)    

 

 

continue ex)

for k in range(5):

     if k == 2:

          continue     -> 밑에 print를 실행않고 바로 for로 감 -> print: 2를 제외하고 출력

 

     print(k)

 

 

종합 예제) k = 0

while True:

     k = k + 1

     if k == 2:

           print("continue next")

           continue

     if k > 4:

           break

 

     print(k)         -> 2는 continue next로만 출력되고 1, 3, 4 출력

 

 

 

 

input()  <- 입력하는 창을 만드는 함수 (스트링기반)

숫자 입력시  변수 = int(input())  를 해야 함

input(" ")            <- " " 안의 내용은 input앞에 넣을 텍스트

input은 하나에 한 코드만 가능. 안그러면 커널 꼬임.. -_-

 

 

 

시간에 대한 판별: 슬라이싱  변수[3:5]  <- 반드시 형식 00:00 지켜야함

대소문자에 대한 판별:  islower()  소문자는 True    대문자는 False,  (대문자로 upper(), 소문자로 lower())

               사용법 ex) 변수.islower()         변수.upper()   변수.lower()  <-> isupper() 함수도 有

다른 ex)

리스트 = ["A", "b", "c", "D"]
for i in range(4):
    if 리스트[i].isupper() == True:
        print(리스트[i])

 

 

변수.split()  <- 공백을 기준으로 단어를 쪼개는 것.

ex) num, currency = user.split()

   -> print(float(num) * 환율[currency], "원")

 변수.split('-')   <- '-' 기준으로 쪼갬

   변수,split('-')[0]   <- 거기서 1번째

 

ex)

리스트 = ['hello.py', 'ex01.py', 'intro.hwp']
for i in range(3):
    name, program = 리스트[i].split('.')
    print(name)     -> name만 출력

 

 

 

enumerate(변수집군)   <- 인덱스와 값을 같이 가져오는 것.

 

이차원 리스트 : 리스트 안에 리스트가 있는 형태 (3차원은 그 안에 또 있는 것)

 

print 단순화---------

com을 변수라고 할 때,

 

print(f"당신은 {com} 사용자입니다.")
print("당신은 "+com+" 사용자입니다.")

 

 

같음

 

728x90
반응형