자료형과 변수의 상세 및 응용 [컴프리헨션]
- 목차 -
1. 정수(int) 및 실수형(float)의 응용
2. 리스트(list)의 응용
3. 문자열(str)의 응용
4. 사전 자료형(dict)의 응용
5. 집합 자료형(set)의 응용
정수 및 실수형의 응용
정수 예제
a = 500
print(a)
a = -500
print(a)
a = 0
print(a)
이처럼 입력하면 500, -500, 0이 출력 되는 것을 알 수 있습니다.
실수 예제
# 소수점이 0일땐 . 뒤 0을 생략
a = 96.
print(a)
a = -96.
print(a)
print(.1234) # 정수의 자리가 0이면 .~으로 0을 생략
a = 9.6
print(a)
a = -9.6
print(a)
# 1 * 10^9
a = 1e9
print(a)
# 9.6 * 10 ^ 9
a = 9.6e9
print(a)
a = 1234.5e-2
print(a)
즉, AeB = (A * 10^B)
주의할 점은 실수의 계산에서 자주 나옵니다.
print(0.3 + 0.6)
해당 값을 실행하면 "0.8999999999999999"이 나오게됩니다.
이는 컴퓨터가 부동소수점 방식을 이용하여 계산하면서 오차가 발생하는 이유입니다.
이는 round 함수를 이용하여 해결할 수 있습니다.
print(round(0.3 + 0.6, 4))
round(A, B)는 A값을 기준으로 B번째 이후 소수점자리에서 반올림해라입니다.
round(0.666, 2) = 0.67
이 처럼 여러 연산을 수행할 수 있습니다.
A + B | 더하기 |
A - B | 빼기 |
A * B | 곱하기 |
A / B | 나누기(소수점) |
A ** B | A^B |
A // B | 나누기(소수점 버림) |
A % B | A를 B로나눈 나머지 출력 |
A ^ B | A와 B를 Xor 연산 |
기타 추가 응용 연산
1. A+=x
2. A-=x
3. A*=x
4. A/=x
5. A^=x
1. A = (A + x)
2. A = (A - x)
3. A = (A * x)
4. A = (A / x)
5. A = (A ^ x)
여기서 연산자 우선순위를 주의하시면서 사용하셔야합니다.
a *= b + 5
a = a * b + 5
둘은 다른 값을 나타냅니다.
옳바른 계산이 되려면
a = a * (b + 5)
가 되어야 합니다.
리스트의 응용
리스트 생성 및 접근
basket = [1, 2, 3, 4, 5]
print(basket)
리스트는 "배열"이라고 생각하시면 됩니다.
basket에는 1 2 3 4 5가 담겨져 있는 것입니다.
여기서 접근방식은
print(basket[정수])
으로 접근합니다 예를들어
basket = [1, 2, 3, 4, 5]
print(basket[2])
하면 2번째는 "3"이므로 3이 출력됩니다.
음수 인덱스 | -5 | -4 | -3 | -2 | -1 |
양수 인덱스 | 0 | 1 | 2 | 3 | 4 |
원소 | 1 | 2 | 3 | 4 | 5 |
basket = [1, 2, 3, 4, 5]
print(basket[-2])
음수 인덱스에 -2는 원소 4이므로 4가 출력됩니다.
basket = [1, 2, 3, 4, 5]
print(basket[:4])
basket 0 번째 부터 4번째 원소 이전 까지 출력한다. (주의! 4번째 원소는 포함하지 않음)
basket = [1, 2, 3, 4, 5]
print(basket[3:])
3번쨰 원소부터 마지막 원소까지 출력한다. (3번쨰 원소를 포함함)
basket = [1, 2, 3, 4, 5]
print(basket[1:4])
1번째 원소부터 4번째 원소 이전 까지 출력한다. (주의! 4번째 원소는 포함하지 않음)
리스트의 선언
1차원 리스트는
basket = [0] * x
2차원 리스트는
basket = [[0] * x] * y
3차원 리스트는
basket = [[[0] * 3] * 5] * 4
이런식으로 선언을 합니다.
리스트의 컴프리헨션
리스트 컴프리 헨션은 리스트 및 여러 형태 반복 형태를 띈 자료형을 한줄로 편안하게 생성할 수 있는 방법입니다.
X1 if A == True else X2
윗 문장부터 이해하셔야합니다. 만약 A가 True라면 X1을 반환하고 아니면 X2을 반환합니다
for 단독 컴프리헨션
basket = [i for i in range(0, 100)]
다음과 같이하면 0 ~ 99가 포함된 리스트가 만들어집니다.
for if 컴프리헨션
basket = [i for i in range(0, 100) if i % 2 == 0]
i % 2 가 0인 경우인 경우에만 basket에 i를 추가합니다.
basket = [i if i % 2 == 0 else -1 for i in range(0, 100)]
i % 2 가 0이면 그대로 넣지만 1이라면 -1을 basket에 넣습니다. 위 for if 컴프리 헨션과는 명백히 다른 결과입니다.
for if if 컴프리헨션
basket = [i for i in range(0, 100) if i % 2 == 0 if i % 3 == 0]
basket = [i for i in range(0, 100) if i % 2 == 0 and i % 3 == 0]
i % 2가 0이면서 i % 3가 0인 경우의 i만 basket에 추가합니다.
if if for 컴프리헨션
basket = [i if i % 2 == 0 else i if i % 3 else -1 for i in range(0, 100)]
i % 2가 0이거나 i % 3이 0이면 i를 추가합니다. 그게아니면 -1를 넣습니다. for if if와는 다릅니다!
for for 컴프리헨션
basket = [i * j for i in range(10) for j in range(5)]
위 컴프리헨션은 아래와 같은 역할을 하게됩니다.
basket = []
for i in range(10):
for j in range(5):
basket.append(i * j)
2중 for for 컴프리헨션
basket = [[i * j for i in range(x)] for j in range(y)]
길이가 y, x인 2중 리스트를 만듭니다.
구간 단위로 쪼개서 생각하면 편합니다.
[i for i in range(x)]
해당은 길이가 x인 list를 만들어주는데
basket = [길이가 x인 list] for j in range(y)]
해당은 길이가 y인 저리스트들을 만들어 주는 것입니다.
기타 메소드
basket = [] | |||
append() | basket.append(data) | 리스트 맨 끝에 data원소를 추가함 |
O(1) |
sort() sort(reverse = True) |
basket.sort() basket.sort(reverse = True) |
오름차순으로 정렬 내림차순으로 정렬 |
O(N log(N)) |
reverse() | basket.reverse() | 리스트를 반대로 뒤집음 | O(N) |
insert() | basket.insert(n, data) | n번째 원소에 data를 추가함 | O(N) |
count() | basket.count(data) | 리스트의 원소 중 data의 개수를 반환해줌 |
O(N) |
remove() | basket.remove(data) | 값이 data인 것을 삭제함 | O(N) |
pop() | basket.pop(i) | i번째 원소를 반환하며 삭제함 |
pop(), pop(0) = O(1) pop(idx) = O(N) |
문자열의 응용
문자열의 연결
a = 'Hello'
b = 'World'
print(a + b)
print(a, b)
위에는 HelloWorld가 출력되지만 아래는 Hello World가 출력된다.
또한 a와 b가 모두 str자료형이여야만 더할 수 있다.
a = 'Hello'
b = 'World'
c = 5
print(a + b + str(c))
print(a, b, 5)
첫 번째는 HelloWorld5가 나오지만
두 번쨰는 Hello World 5가 출력된다. 꼭 주의하자!
a = 'Hello'
b = 'World'
print((a + ' ' + b) * 3)
우선 a + ' ' + b는 Hello World이다. 그것을 3번을 이어 붙인 것과 같다.
Hello WorldHello WorldHello World
문자열 구분
0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 |
H | e | l | l | o | W | o | r | l | d |
a = 'HelloWorld'
print(a[1:5])
a[1:5]는 1~5번째 이전 즉 ello까지 출력이 됩니다.
""와 ''의 차이
기본적으로 차이가 없습니다. 다만 '를 출력하거나 "를 출력 할 경우
print('오늘은 "파이썬"에 대해서')
print("오늘은 \"파이썬\"에 대해서")
print('오늘은 \'파이썬\'에 대해서')
print("오늘은 '파이썬'에 대해서")
위의 해당 \를 붙이냐, 안붙이냐의 차이도 있습니다.
사전 자료형의 응용
memory = dict()
if 'Key' not in memory:
memory['Key'] = 'Banana'
print(memory)
'Key'의 자료형은 str입니다. 만약 'Key' 라는 키값이 memory에 존재하지 않다면 memory['Key']를 'Banana'로 등록해두는 것입니다.
print(memory)를 출력하면 dict에 포함된 모든 key:value를 출력합니다.
print(memory['Key'])
이처럼 하면 Key값의 Value인 'Banana'가 출력이됩니다.
(주의 : key:value 는 모든 object가 사용 가능하며 예시로 str로 들었습니다.)
객체를 넣을 경우, 그 객체의 메모리 주소에 따라 생성합니다. 2. 자료형과 변수 참조
집합 자료형의 응용
추후 보강 예정
작 성 날 짜 : 2020년 12월 17일 목요일
cjw.git@gmail.com
'프로그래밍 > Python' 카테고리의 다른 글
4. 반복문 (0) | 2021.01.14 |
---|---|
3. 조건문 (0) | 2020.12.18 |
2. 자료형과 변수 (0) | 2020.12.17 |
1-1. 파이참 Library 사용하기. (0) | 2020.12.17 |
1. 파이참으로 파이썬 시작하기.[Windows] (0) | 2020.12.16 |
댓글