본문 바로가기
🛠️Skill/Python

[Python] 리스트,튜플,딕셔너리,세트/ 연산자/ if,for문

by Istj_eff 2022. 10. 2.

1. 변수

변수의 기본성질 : 데이터 저장소

 

1. 변수 명명법

  • 알파뉴메릭(알파벳, 숫자, _언더바)으로 구성되어있다.
  • 숫자로 시작할 수 없다.
  • 한글이 되긴하지만 비추.
  • 대소문자를 구별한다.

 

변수명 예제
# 예시 변수 대입연산자(=) 값
abc = 0
_abc = 0
abc_ = 0
___ = 0

# 1ab=0     # 이렇게 하면 에러. 숫자가 앞에 올수 없다.
# ab c = 0  # 띄어쓰기는 알파뉴메릭 아님. 띄어쓰기는 들어갈 수 없다.

# 변수이름은 대소문자를 구별한다
abc=1
Abc=2
aBc=3
abC=4

# 대표 출력문 print( 변수 )
print(abc,Abc,aBc,abC) = 1 2 3 4

# print 생락시 해당 변수의 값을 보여줌
abc = 1

# ()생략하고 출력해도 ()로 묶여서 출력된다.
abc,Abc,aBc = (1, 2, 3)

 

2. 데이터 타입

숫자형

  • int : 정수형
  • float : 실수형

 

문자형 : str

 

집합형

  • 리스트[ ]
  • 튜플 ( )
  • 딕셔너리 { }

 

2-1. 리스트[ ]

  • 이종 데이터간의 수정가능한 집합체.
  • 중복 가능
리스트 예제
# 리스트 = [값1, 값2]
my_list = ['오예스', '몽쉘', '초코파이', '초코파이'] # 중복가능
your_list = [1, 2, 3.14, True, False, '문자열'] # 타입모두 다 넣을 수 있다. 
empty_list = [] # 빈 리스트

print(my_list[0]) # => 오예스
print(my_list[0:2]) # => ['오예스','몽쉘']
print('몽쉘' in my_list) # => True
print(len(my_list)) # => 4

my_list[1] = '몽쉘카카오' # 값 수정
my_list.append('빅파이')  # 값 추가
my_list.remove('오예스')  # 값 삭제


# 리스트 확장
mom_list = ['빅파이', '오뜨']
my_list.extend(mom_list) 


# 중복값을 제외한 리스트값만 뽑고싶다
my_list = ['오예스', '몽쉘', '초코파이', '초코파이']
my_dic = dict.fromketys(my_list)
print(m,y_dict)
# => {'오예스':None, '몽쉘':None, '초코파이':None}


my_list = list(my_dic)
print(my_list)
# => ['오예스', '몽쉘', '초코파이']

 

 

2-2. 튜플( )

  • 이종데이터간의 수정 불가능한 집합체, 키값으로 인덱스를 적용.
  • 중복 가능
튜플 예제
# * 별사용
num = (1,2,3,4,5,6,7,8,9,10)
(one,two,*others) = num 
# one1, two에 2를 튜플로 넣고, 3~10은 others에 리스트로 넣어진다.

 

 

2-3. 딕셔너리 { }

  • key값-value값을 기반으로 한 집합형태
  • key값은 중복이 안됨
딕셔너리 예제
person = {'이름':'나도', '나이':7, '키':120, '몸무게':23}

# key값
print(person['나이']) => 7
print(person.get('별명')) => None # 없는 key값 get으로 불러오면 None

# value값 변경
person['키'] = 130

# value값 여러개 변경 -> update 메서드 사용
person.update({'키':140, '몸무게':26})

# 특정 key:value 삭제 -> pop 메서드 사용
person.pop('몸무게')

 

 

2-4. 세트 { }

  • 값들의 순서가 보장되지 않는 수정 가능한 집합형태
세트 예제

A = {'돈가스', '보쌈', '제육덮밥'}
B = {'짬뽕', '초밥', '제육덮밥'}

# 교집합
print(A.intersection(B)) => {'제육덮밥'}

# 합집합 : 중복 허용 안함
print(A.union(B)) => {'돈가스', '보쌈', '제육덮밥', '짬뽕', '초밥'}

# 차집합
print(A.difference(B)) => {'돈까스', '보쌈'}

----------------------------------------------------------
my_set = {'A','B', 'C'}
my_set.clear() #모든값삭제
my_set.remove('B')

 

  리스트(List) 튜플(Tuple) 세트(Set) 딕셔너리(Dictionary)
선언 list = [ ] tuple = ( ) set = { } dic = {key : value}
순서 보장 O O X O
중복 허용 O O X X
접근 list(index) tup[index] X dic[key]
dic.get(key)
수정 O X X O (value)
추가 append()
insert()
extend()
X add()
update()
dic[key] = value
update()
삭제 remove( )
pop( )
clear( )
X remove( )
discard( )
pop( )
cleart( )
pop( )
popitem( )
clear( )

 


 

2. 수식 (연산자)

2-1. 대입연산자 = 우측의 값을 좌측에 대입한다.

대입연산자 예시
# 대입연산자 / 사칙연산
# 대입연산자를 통해 변수에 숫자를 대입
# 앞에 띄어쓰기, 탭넣으면 에러뜸

a = 3 
b = 4
c = a + b
c = a - b
c = a * b
c = a / b
print(c) # 한 명령에 한개만 들어간다 # =7, -1, 12, 0.75

 

2-2. 산술연산자

  • 사칙연산자 : + - * /
  • 나머지와 몫 연산자 : % //
  • 거듭제곱 : **
산술연산자 예시
# 몫 연산자
d = b // a 
d = 1

# 나머지 연산자
e = b % a
print(b,"을 ",a,"로 나눈 몫은 ",d,"이고 나머지는 ",e,"이다")
= 43 로 나눈 몫은  1 이고 나머지는  1 이다

 

 

2-3. 비교연산자 (비교 우위를 참 거짓으로 표현)

>, <, >=, <=, ==, != 

비교연산자 예시
# 비교연산자
print(a,b,'크다',a>b)
print(a,b,'작다',a<b)
print(a,b,'같다',a==b) # =하나만 쓰면, 같냐고(==) 물어본게 아니라 대입이라서 에러로 뜸.
print(a,b,'다른가',a!=b)
print(a,b,'크거나 같다',a>=b)
print(a,b,'작거나 같다',a<+b)


# 3 4 크다 False
# 3 4 작다 True
# 3 4 같다 False
# 3 4 다른가 True
# 3 4 크거나 같다 False
# 3 4 작거나 같다 True


# 거듭제곱
a=4
print(a**2) # =>16

 

2-4. 논리연산자(불린대수) and, or, not

논리연산자 명칭 기능
and 논리곱 양쪽이 참일때만 참 a and b
or 논리합 한쪽이 참이면 참 a or b
not 논리부정 반대의 결과 not a

 

논리연산자 예시
#1
a=True
b=3>4
print('논리곱 and :', a and b) # a와 b 모두 true여야 true 출력
print('논리합 or:', a or b)    # a 와 b 둘중 하나만 true여도 true 출력
print('논리부정 not :', not a) # a가 true면 반대로 False 출력

=
논리곱 and : False
논리합 or: True
논리부정 not : False

#2
score=82
if(score>=75 and score<=85):
	print('해당자 입니다')
else:
	print('해당되지 않습니다')
=해당자 입니다

 

묵시적 논리값
# a가 0이거나 빈문자열이 아니면 참이다.
a='False'
if(a):
    print('참입니다')
else:
    print('거짓입니다')
# =참입니다
# not 논리연산자
a='' 
if(not a):
    print('참입니다') 
else:
    print('거짓입니다')
# =참입니다 # a가 빈칸이라 '거짓입니다'인데 not이라 반대값 출력


# a가 빈문자열이라 False인데 not a 반대라서 True 이다
a='' 
b=1
if(not a and b):
    print('참입니다')
else:
    print('거짓입니다')
# =참입니다

 

 


 

3. 제어문 if / for

3-1. if 조건문

if 조건식1 :
     참일때 실행
elif 조건식2 :
     참일때 실행
else :

 

3-2. 반복문 for

for 변수 in 반복 범위 또는 대상 :
반복할 명령블럭
반복문 for 예제
# range에 한계값. 한계값 이전 숫자까지 생성
for i in range(5):
    print(i)

# 0
# 1
# 2
# 3
# 4
# range에 시작과 한계값과 스텝(몇씩 건너띄어라)
for i in range(2, 10, 2):
    print(i)
# 2
# 4
# 6
# 8
for i in range(1,5):
    for j in range(1,5):
        print('i:',i,'j:',j, end='')
    print('-------')

# i: 1 j: 1i: 1 j: 2i: 1 j: 3i: 1 j: 4-------
# i: 2 j: 1i: 2 j: 2i: 2 j: 3i: 2 j: 4-------
# i: 3 j: 1i: 3 j: 2i: 3 j: 3i: 3 j: 4-------
# i: 4 j: 1i: 4 j: 2i: 4 j: 3i: 4 j: 4-------
# range에 시작과 한계값
for i in range(2,7):
    print(i)

# 2
# 3
# 4
# 5
# 6

 

3-3. 한줄 for 문

[반복실행문 for 반복변수 in 반복범위 if 조건문]
list comprehension 기본 예제
# 원래 이렇게 길게 for문 작성
dict={'사과':1000,'복숭아':1500,'바나나':2000}

# 사과[1000], 복숭아[1500]로 표현하고싶다
fru=[]
for k,v, in dict.items():  #k=key값, v=value값
    d='{}[{}]'.format(k,v)
    if(v>1000):            # 조건추가. value값이 1000이상인것만
        fru.append(d)
print(fru)

# =>['복숭아[1500]', '바나나[2000]']
# 한줄 for문으로 하면
#'{}[{}]'.format(k,v) 이게 즉시 리스트로 만들어줌 
fru=['{}[{}]'.format(k,v) for k,v in dict.items() if v>1000] # value값이 1000이상인것만
fru

# =>['복숭아[1500]', '바나나[2000]']
numbers = [1,2,3,4,5]
result = [i**2 for i in numbers]
print(result)

# =>[1, 4, 9, 16, 25]
# 조건문추가 : i가 3보다 큰것만
square = [i**2 for i in numbers if i>3]
print(square)

# =>[16, 25]
products = ['JOA-2020', 'JOA-2021', 'SIRO-2021', 'SIRO-2022']

# 모든 모델명 뒤에 SE 붙여줘
prod_se = [p+'SE' for p in products]

# 모든 모델명을 소문자로 바꿔줘
prod_lower = [p,lower() for p in products]

# 22년 제품만 뽑는데 뒤에 (최신형)이라는 글자 붙여줘
prod_new = [p+'(최신형)' for p in products if p.endswith('2022')]

 

 

 

댓글