본문 바로가기
Python

[Python] 자료형, 변수

by curious week 2024. 12. 12.

숫자

# integer(정수형)
a = 789
a = -1340
a = 0

# floating-point(실수형)
a = 1.2
a = -3.45

# E 또는 e는 10의 n승을 의미 e3 == 10의 3승 == 1000
a = 4.24e3
a = 4.34e-10

# 8진수(0o, 0O, 숫자 0 + o), 16진수(0x, 0X)
a = 0o177
a = 0xabc

# 연산자: ** == 제곱 , % == 나눗셈의 나머지, // == 나눗셈 후 몫(정수값)을 리턴
a = 10 ** 10
a = 7 % 2 # 1
a = 7 // 2 # 3

# 복합 연산자: 계산 후 다시 대입해 계산된다. +=, -=, *=, /=, //=, %=, **=
a = 1
a = a + 1
# 위 아래 같은 값을 나타낸다.
a += 1

print(a)

문자

# 문자열 만들기 '', "", '''', '''''',""""""
# ' 또는 " 세 개를 사용하면 문자열의 줄바꿈을 유지할 수 있다.
# 'hi', "hi", ''hi'', """hi"""
# "Don't give up" == 'Don\'t give up'

# 이스케이프 코드: \n - 줄바꿈, \t - 문자열 사이 탭 간격, \\ - \사용, \' - '사용, \" - "사용

# 문자열 곱하기
print("=" * 20)
print("python")
print("=" * 20)

a = "Life is too short, You need Python"
# print(a[0]) == L
# print(a[0:4]) == Life == 0 <= a = 4
# print(a[:4]) == Life
# print(a[:]) == 전체 출력(Life is too short, You need Python)

# 문자열 포메팅(대입) %s 문자열(String)
"""
%s 문자열(String)
%c 문자 1개(character)
%d 정수(Integer)
%f 부동소수(floating-point)
%o 8진수
%x 16진수
%% Literal % (문자 % 자체)
"""
a = "I'm %d years old." %3
a = "%d %s age." %(3, "month")
# 포멧코드와 숫자 사용 (^ = 공백 수 표현)
a = "%6s" % "hi" # == '^^^^^^hi'
a = "%-6skim" % 'hi' # == 'hi^^^^kim'
a = "%0.4f" % 3.1415926535 # == 3.1416
a = "%.4f" % 3.1415926535 # == 3.1416
# format 함수 이용
a = "{0} months" .format(3)
a = "{0} months and {1} days" .format("three", 3)
a = "{months} months" .format(months = 3)

# 정렬
a = "{0:>3}".format("hi") #화살표 방향으로 정렬 == '^hi'
a = "{0:^5}".format('hi') #가운데 정렬 == '^hi^^'

# 공백 채우기 (문자 {} == {{}})
a = "{0:=^10}" .format("hi") # ====hi====
a = "{0:!<5}" .format("No") # No!!!

# f문자열 포매팅
age = 3
a = f'{age} years old.'

arr = {'num': 3, 'text': 'months'}
a = f'{arr["num"]} {arr["text"]}'

# count
text = 'mars112'
a = text.count('1') # 2

# find, index
a = text.find('s') # 3
a = text.index('s') # 3

# join
a = ",".join('abcd') # a,b,c,d
a = '/'.join(['a', 'b', 'c']) # a/b/c

# upper, lower, lstrip, rstrip, strip
hi = ' hi '
a = hi.upper() # ^^HI^^
a = a.lower() # ^^hi^^
a = hi.lstrip() # hi^^
a = hi.rstrip() # ^^hi
a = hi.strip() # hi

# replace
text = 'hongkong is good!'
a = text.replace('hongkong', 'seoul') # seoul is good!

# split
a = text.split() # ['hongkong', 'is', 'good!']
b = 'a,b,c'
a = b.split(',') # ['a', 'b', 'c']


print(a)

리스트

list = [1, 3, 5, 7, 9]

a = [1, 2]
b = [3, 4]
# 리스트 더하기, 반복하기
a = a + b
a = a * 2

# 리스트 길이
# print(len(a))

# 리스트 수정
a[4] = 5

# 리스트 지우기
del a[4:]

# 리스트에 요소 추가
a.append(5)
a.append([6, 7]) # 객체 추가 [... 5, [6, 7]]

# 리스트 요소를 정렬
a = [3, 1, 4, 2]
a.sort()

# 리스트 뒤집기
a.reverse()

# index값 반환
b = a.index(1)
# print(b)

# 리스트에 요소 삽입( insert(위치, 값))
a.insert(0, 5)

# 순서대로 찾아서 첫 값을 지우기
a.remove(5)

# pop: 리스트의 맨 마지막 요소를 리턴하고 그 요소를 삭제
a.pop() # 리스트의 맨 마지막 요소를 리턴하고 그 요소를 삭제(print하지 않으면 index값으로 삭제하는 것도 가능)
a.pop(2)

# 리스트 속 x 개수
b = a.count(3)
# print(b)

# 리스트 확장 append([1, 2]) == [4, 3, [1, 2]]
a.extend([2, 1])
# extend는 확장되어 [4, 3, 2, 1]이 된다.


print(a)

튜플

요소 수정과 요소 삭제가 불가능하다.

# 튜플
a = () # 빈 튜플 생성
a = (1, ) # 한 개만 쓸 때는 끝에 , 필수
a = (1, 2)
a = 1, 2 # ()없이 사용가능

######
# del a[0]
# a[0] = '2'
# 이처럼 투플 요소를 리스트처럼 변경하면 오류가 발생
######

# [인덱스] == 값 출력 
# print(a[0])

# 슬라이싱
# print(a[1:])

# 튜플 더하기, 곱하기
b = (3, 4)
a = a + b # (1, 2, 3, 4)
a = a * 2 # (1, 2, 3, 4, 1, 2, 3, 4)

# 투플 길이 구하기
a = len(a)

딕셔너리

  • 대응관계를 나타내는 자료형
  • 키와 값으로 이뤄져있고 순서가 없다
# key와 value로 이루어져있다.
a = {1: 'hi'}
print(a[1])

# 딕셔너리 추가
a = {1: 'a', 2: 'b'}
a[3] = 'c'
# 리스트도 추가할 수 있다. (key에는 리스트[]를 사용할 수 없다.)
a[4] = [1, 2, 3]
print(a[4][1])
a = {'one': [1, 2], 'name': 'kim'}
print(a['one'])

# 딕셔너리 삭제
del a['one']

# key리스트 만들기 (3.0 이후 버전에서 리턴값으로 리스트가 필요한 경우에는 list(a.keys())를 사용)
# key출력 방법
a = {1: '하나', 2: '둘', 3: '셋'}

# a.keys() == 키 리스트
# 1)
print(a.keys()) # 출력: dict_keys([1, 2, 3])

# 2)
for k in a.keys():
  print(k) # 출력: 1 2 3

# 3)
b = list(a.keys())
print(b) # 출력: [1, 2, 3]

# Value리스트 values
print(a.values()) # 출력: dict_values(['하나', '둘', '셋'])

# key, value 모두 얻기 items
print(a.items()) # 출력: dict_items([(1, '하나'), (2, '둘'), (3, '셋')])

# key: value 모두 지우기 clear
# a.clear()
print(a) # 출력: {}

# key로 value 값 얻기
print(a.get(1)) # 출력: 하나
# a.get(1)으로 값이 없으면 None 리턴
# a[1]으로 값이 없으면 에러 발생
# Key가 없을 경우, 미리 정해 둔 디폴트 값을 대신 가져오게 하고 싶을 때는 get(x, '디폴트 값')을 사용
print(a.get(4, '없음'))

# 해당 키 내부에 값이 있는 지 확인
print(1 in a) # 출력: True
print(4 in a) # 출력: False

집합

# 집합 자료형의 특징

a = set([1, 2, 3])
# 중복을 허용하지 않는다.
# 순서가 없다(Unordered)
a = set('Hello') # {'e', 'l', 'H', 'o'}

# set 자료형에 저장된 값을 인덱싱으로 접근하려면 다음과 같이 리스트나 튜플로 변환해야한다.
a = list(a)
a = tuple(a)

a = set([1, 2, 3, 4, 5])
b = set([3, 4, 5, 6, 7])

# 교집합 구하기 1) a & b , 2) a.intersection(b)
print(a & b) #{3, 4, 5}
print(a.intersection(b)) #{3, 4, 5}

# 합집합 구하기 1) a | b , 2) a.union(b)
print(a | b) #{1, 2, 3, 4, 5, 6, 7}
print(a.union(b)) #{1, 2, 3, 4, 5, 6, 7}

# 차집합 구하기 1) a - b , 2) a.difference(b)
print(a - b) #{1, 2}
print(a.difference(b)) #{1, 2}

# 값 1개 추가 add
a.add(6)

# 값 여러 개 추가하기 update
a.update([7, 8, 9, 10])

# 특정 값 제거 remove
a.remove(10)

print(a)

불(bool)

a = True
b = False
# 타입확인하기
print(type(a)) # <class 'bool'>

print(1 == 1)

# 자료형에 따른 참 거짓
# 참: "python", 거짓 ""
# 참: [1, 2, 3], 거짓: []
# 참: (1, 2, 3), 거짓: ()
# 참: {'a': 1}, 거짓: {}
# 참: 1, 거짓: 0
# 거짓: None

print(bool('python'))
print(bool(''))

변수(var)

 

a = True
b = False
# id는 변수가 가리키고 있는 객체의 주소 값을 리턴
print(id(a)) # 출력(주소값): 4343306104

# 복사를 하면 동일한 주소 값을 갖는다.
a = b
print(id(a)) # 4381841240
print(id(b)) # 4381841240

print(a is b)  # (a is b: a와 b가 같을까?) True

# 값을 가져오면서 다른 주소값을 가지도록,
# 1) [:]
a = [1, 2]
b  = a[:]
print(a is b) # False

# 2) copy 모듈 이용하기 // copy(a) == a.copy()
from copy import copy # copy 모듈
b = a.copy() # copy(a)
print(a is b) # False

# 변수를 만드는 다양한 방법
# 1) 튜플
a, b = (1, 2)
(a, b) = 1, 2
# 위 둘의 결과는 같다. (튜플은 괄호를 생략할 수 있다.)
# 2) 리스트
[a, b] = ['no', 'body']
# 3) 여러 개의 변수에 같은 값
a = b = 'no body'
c = 'want you' 
print(a, b, c) # no body no body want you

# 두 변수의 값을 바꾸기
a, b = c, c 
print(a, b, c) # want you want you want you

'Python' 카테고리의 다른 글

[Python] 표준 라이브러리  (0) 2025.01.12
[Python] 내장 함수  (0) 2025.01.12
[Python] 클래스, 모듈, 패키지, 예외처리  (1) 2025.01.12
[Python] 입출력  (0) 2025.01.08
[Python] 제어문 (if, while, for)  (0) 2024.12.26