본문 바로가기
프로그래밍/Python

2-1. 자료형과 변수의 상세 및 응용

by cjw.git 2020. 12. 17.

자료형과 변수의 상세 및 응용 [컴프리헨션]


- 목차 -

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

댓글