배열: 여러 개의 데이터들을 모은 집합. 추가와 삭제가 가능하다. [ ]로 사용한다.
튜플: 리스트와 동일하게 여러 객체를 모아서 담는다. 숫자, 문자, 객체, 배열, 튜플 안의 튜플 전부 가능하다. 하지만 튜플 내의 값은 수정이 불가하다. 추가도, 삭제도 안 된다. 한번 만들어지면 끝까지 가지고 가야 된다. ( )로 사용하고, ( )가 없어도 동일하게 사용 가능하다.
튜플 요소 값 삭제 안된다.
a = (1, ["이준호", "이지윤"], 3, 4, ["dddd", "wwww", "sdfs"])
# 튜플 삭제 시 에러
del a[2]
>>>
del a[2]
TypeError: 'tuple' object doesn't support item deletion
그럼 튜플은 왜 쓸까 ?
프로그램이 실행 되는 동안 그 값이 변경되면 안 되는 경우에는 튜플을 사용하면 된다. 또한 튜플은 리스트에 비해 더 적은 메모리를 필요로 하고, 속도가 빠르다는 장점이 있다
https://bigdaheta.tistory.com/8
튜플 원본이 변경 되지 않는 선에서는 문법 적용이 가능하다
더하기
곱하기
딕셔너리: 연관 배열(associative array)은 자료구조의 하나로, 키 하나와 값 하나가 연관되어 있으며 키를 통해 연관되는 값을 얻을 수 있다. 연상 배열, 결합형 배열, 맵(map), 사전(dictionary)으로 부르기도 한다.
연관 배열은 일반적으로 다음의 명령을 지원한다.
- 키와 값이 주어졌을 때, 연관 배열에 그 두 값을 저장하는 명령
- 키가 주어졌을 때, 연관되는 값을 얻는 명령
- 키와 새로운 값이 주어졌을 때, 원래 키에 연관된 값을 새로운 값으로 교체하는 명령
- 키가 주어졌을 때, 그 키에 연관된 값을 제거하는 명령
- https://ko.wikipedia.org/wiki/%EC%97%B0%EA%B4%80_%EB%B0%B0%EC%97%B4
리스트에 들어 있는 변수에 key 값이 별도로 있다 !
아래 방식으로 딕셔너리를 추가할 수 있다.
dic = {"name": "joonho", "age": 12}
dic["shcool"] = "ku"
print(dic)
>>>
{'name': 'joonho', 'age': 12, 'shcool': 'ku'}
딕셔너리 삭제
dic = {"name": "joonho", "age": 12}
dic["shcool"] = "ku"
del dic["name"]
print(dic)
>>>
{'age': 12, 'shcool': 'ku'}
key 값은 절대로 겹칠 수 없다 !
[key 값만 또 리스트로 추출]
dic = {"name": "joonho", "age": 12}
print(dic.keys())
>>>
dict_keys(['name', 'age'])
a = {"name": "joonho", "age": 31, "school": "ku"}
print(a.keys())
print(a.values())
print(a.items())
>>>
dict_keys(['name', 'age', 'school'])
dict_values(['joonho', 31, 'ku'])
dict_items([('name', 'joonho'), ('age', 31), ('school', 'ku')])
for 문으로 이렇게 많이 쓴
for k, v in a.items():
print("key =" + str(k))
print("value = " + str(v))
get()
b = {1: "yellow", 2: "blue", 3: "red", 4: "green", 5: "black"}
# print(b[7])
>>>
print(b[7])
~^^^
KeyError: 7
print(b.get(7))
print(b.get(4,"없음"))
>>>
None
두개의 차이 점을 확인해 봅니다.
집합 !
# 집합을 정의하는 방법
s1 = set([1,2,3])
s2 = {1,2,3}
set은 집합으로 한 집합 안에는 중복 되는게 없어야한다
set()으로 감싸면 중복 된게 없어진다.
l = [1, 2, 3, 2, 1, 5]
newlist = list(set(l))
print(type(newlist))
print(newlist)
>>>
[1, 2, 3, 5]
a1 = set("hello")
print(a1)
>>>
{'o', 'l', 'e', 'h'}
교집합 , 합집합 , 차집합 , 집합 값 추가 , 집합 값 여러개 추가
s1 = set([1, 2, 3, 4, 5, 6])
s2 = set([4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15])
# 교집합
print(s1 & s2)
# 합집합
print(s1.union(s2))
print(s1 | s2)
# 차집합
print(s1 - s2)
print(s1.difference(s2))
# 집합 값 추가
s1.add("d")
print(s1)
# 집합 값 여러개 추가
s1.update([30, 40, 50, 60])
print(s1)
bool 형 !
"python" : 참
"" : 거짓
[1,2,3] : 참
[] : 거짓
() : 거짓
{} : 거짓
1 : 참
0 : 거짓
None : 거짓
a = "안녕"
b = ""
if a:
print(a)
if b:
print(b)
c = [1, 2, 3, 4, 5]
while c:
c.pop()
print(c)
>>>
[1, 2, 3, 4]
[1, 2, 3]
[1, 2]
[1]
[]
https://pythontutor.com/visualize.html#mode=display
a = [1, 2, 3]
b = a
a[1] = 4
print(b)
print(a is b)
>>>
[1, 4, 3]
True
b는 a의 주소를 가지고 있기 때문에 b도 바뀐다
a와 b는 같은 곳을 바라보고 있다고 생각하면 좋다 .
a = [1, 2, 3]
b = a[:] # 슬라이싱 하면 새로운 변수가 생긴다.
a[1] = 4
print(a)
print(b)
print(id(a))
print(id(b))
>>>
2592406473472
2592407449664
주소가 달라진다.
또 다른 방법
from copy import copy
a = [1, 2, 3]
b = a.copy()
a[1] = 4
print(str(a) + " id :"+str(id(a)))
print(str(b) + " id :"+str(id(b)))
>>>
[1, 4, 3] id :2389533160640
[1, 2, 3] id :2389532899200
파이썬의 특장점 !
a = 3
b = 5
temp = b
b = a
a = temp
print(a)
print(b)
일반적인 언어들의 변수 값 변경 코딩
a = 3
b = 5
a, b = b, a
print(a, b)
>>>
5 3
비교 연산자 (Comparison Operators):
a = 10, b = 20 이라 가정한다.
OperatorDescriptionExample
== | 값이 동일하다 | (a == b) → false |
!= | 값이 동일하지 않다 | (a != b) → true |
> | 왼쪽 값이 오른쪽 값보다 크다 | (a > b) → false |
< | 왼쪽 값이 오른쪽 값보다 작다 | (a < b) → true |
>= | 왼쪽 값이 오른쪽 값보다 크거나 동일하다 | (a >= b) → false |
<= | 왼쪽 값이 오른쪽 값보다 작거나 동일하다 | (a <= b) → true |
if 문
money = 2000
if money >= 3000:
print("taxi")
else:
print("walk")
money = 2000
card = 1
if money >= 3000 or card == 1:
print("taxi")
else:
print("walk")
if 1 not in [1, 2, 3]:
print("taxi")
else:
print("walk")
if 2 in [1, 2, 3]:
print("taxi")
else:
print("walk")
>>>>
walk
taxi
# 조건부 표현식
score =70
message = "sucess" if score >= 60 else "aa"
while 조건문
treeHit = 0
while treeHit < 10:
treeHit = treeHit + 1
print("나무를 %d 번 찍었습니다." % treeHit)
if treeHit == 10:
print("나무 넘어 갑니다.")
>>>>
나무를 1 번 찍었습니다.
나무를 2 번 찍었습니다.
나무를 3 번 찍었습니다.
나무를 4 번 찍었습니다.
나무를 5 번 찍었습니다.
나무를 6 번 찍었습니다.
나무를 7 번 찍었습니다.
나무를 8 번 찍었습니다.
나무를 9 번 찍었습니다.
나무를 10 번 찍었습니다.
나무 넘어 갑니다.
python 에서 ++ 표현을 못 쓴다.
coffee = 40
money = 300
while money:
print("입금 되었습니다. 커피 추출 중")
money -= 10
coffee -= 1
print("남은 커피는 %d 개입니다." % coffee)
if not coffee:
print("커피가 다 떨어졌습니다. 판매 중지 ! ")
break
if not money:
print("돈이 다 떨어졌습니다. 판매 중지 ! ")
break
>>>
입금 되었습니다. 커피 추출 중
남은 커피는 39 개입니다.
입금 되었습니다. 커피 추출 중
남은 커피는 38 개입니다.
입금 되었습니다. 커피 추출 중
남은 커피는 37 개입니다.
입금 되었습니다. 커피 추출 중
남은 커피는 36 개입니다.
입금 되었습니다. 커피 추출 중
남은 커피는 35 개입니다.
입금 되었습니다. 커피 추출 중
남은 커피는 34 개입니다.
입금 되었습니다. 커피 추출 중
남은 커피는 33 개입니다.
입금 되었습니다. 커피 추출 중
남은 커피는 32 개입니다.
입금 되었습니다. 커피 추출 중
남은 커피는 31 개입니다.
입금 되었습니다. 커피 추출 중
남은 커피는 30 개입니다.
입금 되었습니다. 커피 추출 중
남은 커피는 29 개입니다.
입금 되었습니다. 커피 추출 중
남은 커피는 28 개입니다.
입금 되었습니다. 커피 추출 중
남은 커피는 27 개입니다.
입금 되었습니다. 커피 추출 중
남은 커피는 26 개입니다.
입금 되었습니다. 커피 추출 중
남은 커피는 25 개입니다.
입금 되었습니다. 커피 추출 중
남은 커피는 24 개입니다.
입금 되었습니다. 커피 추출 중
남은 커피는 23 개입니다.
입금 되었습니다. 커피 추출 중
남은 커피는 22 개입니다.
입금 되었습니다. 커피 추출 중
남은 커피는 21 개입니다.
입금 되었습니다. 커피 추출 중
남은 커피는 20 개입니다.
입금 되었습니다. 커피 추출 중
남은 커피는 19 개입니다.
입금 되었습니다. 커피 추출 중
남은 커피는 18 개입니다.
입금 되었습니다. 커피 추출 중
남은 커피는 17 개입니다.
입금 되었습니다. 커피 추출 중
남은 커피는 16 개입니다.
입금 되었습니다. 커피 추출 중
남은 커피는 15 개입니다.
입금 되었습니다. 커피 추출 중
남은 커피는 14 개입니다.
입금 되었습니다. 커피 추출 중
남은 커피는 13 개입니다.
입금 되었습니다. 커피 추출 중
남은 커피는 12 개입니다.
입금 되었습니다. 커피 추출 중
남은 커피는 11 개입니다.
입금 되었습니다. 커피 추출 중
남은 커피는 10 개입니다.
돈이 다 떨어졌습니다. 판매 중지 !
vscode 를 통해서 디버깅을 하면서 변수 값의 변화를 잘 체크 해보시라 !
a = 0
while a < 10:
a = a+1
if a % 2 == 0:
continue
print(a)
>>>>
1
3
5
7
9
# 홀수 추출 알고리즘
for 문 에 튜플 사용 하기
a = [(1, 2), (3, 4), (5, 6)]
for (i, j) in a:
print(i+j)
>>>
3
7
11
range 자주 사용하는 함수
for i in range(1, 11):
print(i)
print(end)
>>>
1
2
3
4
5
6
7
8
9
10
end
end = "end"
sum = 0
for i in range(1, 11):
sum += i
print(sum)
print(end)
>>>
55
end
구구단 이중 for 문 사용 법
for i in range(2, 10):
for j in range(1, 10):
print(i*j, end=", ")
print('')
>>>
2, 4, 6, 8, 10, 12, 14, 16, 18,
3, 6, 9, 12, 15, 18, 21, 24, 27,
4, 8, 12, 16, 20, 24, 28, 32, 36,
5, 10, 15, 20, 25, 30, 35, 40, 45,
6, 12, 18, 24, 30, 36, 42, 48, 54,
7, 14, 21, 28, 35, 42, 49, 56, 63,
8, 16, 24, 32, 40, 48, 56, 64, 72,
9, 18, 27, 36, 45, 54, 63, 72, 81,
리스트 내포
a = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11]
result = [num*3 for num in a if num % 2 == 0]
print(result)
>>>
[6, 12, 18, 24, 30]
함수 입력 ->함수 ->출력 <기본>
하지만 또 꼭 입력과 출력이 있어야 하는건 아니다
def sum(a, b):
result = a+b
return result
print(sum(1, 2))
>>>
3
* arg : 인자에 대해여 여러개를 넣을 수 있다
def sum_many(*args):
sum = 0
for i in args:
sum += i
return sum
print(sum_many(1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12))
>>>
78
**karg : 딕셔너리 형식 여러개 인자 받을 수 있다 .
def dic_many(**kargs):
for i in kargs.keys():
if (i == "name"):
print("당신의 이름은 : " + kargs[i])
print(dic_many(name="joonho", age="12"))
>>>
당신의 이름은 : joonho
결과 값은 1개로 나온다 튜플 형태 !
def sum_and_mul(a, b):
return a+b, a*b, a-b
print(sum_and_mul(1, 2))
>>>
(3, 2, -1)
초기값 설정 가능 !
def sum_and_mul(a, b, c=True):
if c:
return a+b, a*b, a-b
print(sum_and_mul(1, 2))
>>>
(3, 2, -1)
함수 안에 선언된 변수의 효력 범위
a = 1
def vartest(a):
a = a+1
return a
vartest(a)
print(vartest(a))
print(a)
>>>
2
1
이건 왜 그럴까요 ?
알아 맞춰 보세요 !!
a = 1
def vartest(a):
a = a+1
return a
a = vartest(a)
print(vartest(a))
print(a)
>>>
3
2
global 변수 : 전역 변수 !!
a = 1
def vartest():
global a
a = a+1
return a
print(vartest())
print(a)
>>>
2
2
람다함수 !!
add = lambda a,b: a + b
print(add(1,2))
실행시키니까
def add(a, b): return a + b
print(add(1, 2))
계속 이렇게 바뀌네
단독으로 써서 그런거 같다
myList = [lambda a, b: a + b, lambda a, b:a*b]
myList[0]
print(myList[0](1, 2))
>>>
3
input()
a = input("숫자를 입력하세요 : ")
print(a)
>>>
숫자를 입력하세요 : 12
12
'Python' 카테고리의 다른 글
PYTHON : 다양한 출력 포멧 / 파일 입출력/PICKLE/WITH/QUIZ (0) | 2023.02.22 |
---|---|
PYTHON 알고리즘 -게시판 페이징 하기 (0) | 2023.02.22 |
PYTHON 알고리즘 - 3과 5의 배수 합하기 (0) | 2023.02.22 |
PYTHON : 파일 읽고[read(),readline(),readlins()] 쓰기, 코딩 스터디 그룹 용 (0) | 2023.02.21 |
PYTHON: 파이썬 간단 문법으로 문제 풀기 (for문 /if문) (0) | 2021.02.11 |
PYTHON: 파이썬 기초 문법(replace / find/ 형변환/len ) (0) | 2021.02.06 |