연산자

산술연산자

Operator
Example
+ 덧하기
a + b = 30
- 빼기
a – b = -10
* 곱하기
a * b = 200
/ 나누기
b / a = 2
** 제곱
a = 3; b = 4; print(a ** b) 81
// 정수 몫
9//2 = 4 and 9.0//2.0 = 4.0, -11//3 = -4, -11.0//3 = -4.0
% 나머지
b % a = 0

비교연산자

Operator
Example
==
(a == b) is not true.
!=
(a != b) is true.
<>
(a <> b) is true. This is similar to != operator.
>
(a > b) is not true.
<
(a < b) is true.
>=
(a >= b) is not true.
<=
(a <= b) is true.

할당연산자

Operator
Example
=
c = a + b assigns value of a + b into c
+= Add AND
c += a is equivalent to c = c + a
-= Subtract AND
c -= a is equivalent to c = c - a
*= Multiply AND
c *= a is equivalent to c = c * a
/= Divide AND
c /= a is equivalent to c = c / ac /= a is equivalent to c = c / a
%= Modulus AND
c %= a is equivalent to c = c % a
**= Exponent AND
c **= a is equivalent to c = c ** a
//= Floor Division
c //= a is equivalent to c = c // a

논리연산자

Operator
Example
and Logical AND
(a and b) is true.
or Logical OR
(a or b) is true.
not Logical NOT
Not(a and b) is false.

Bitwise 연산자

  • 비트단위연산에 사용하는 연산자
Operator
Example
& Binary AND
(a & b) (means 0000 1100)
| Binary OR
(a | b) = 61 (means 0011 1101)
^ Binary XOR
(a ^ b) = 49 (means 0011 0001)
~ Binary Ones Complement
(~a ) = -61 (means 1100 0011 in 2's complement form due to a signed binary number.
<< Binary Left Shift
a << 2 = 240 (means 1111 0000)
>> Binary Right Shift
a >> 2 = 15 (means 0000 1111)

멤버쉽 연산자

  • 좌측 Operand가 우측 컬렉션에 속해 있는지 아닌지를 체크
Operator
Example
in
x in y, x가 시퀀스 y의 멤버이면 1이 됩니다.
not in
x not in y, x가 시퀀스 y의 멤버가 아닌 경우 1이 됩니다.

Identity 연산자

  • 두 객체의 메모리 위치를 체크
Operator
Example
is
연산자의 양쪽에 있는 변수가 동일한 객체를 가리키는 경우 true로 평가하고 그렇지 않으면 false로 평가합니다.
is not
연산자의 양쪽에 있는 변수가 동일한 객체를 가리키는 경우 false로 평가하고 그렇지 않으면 true로 평가합니다.

파이썬 연산자 우선 순위

Operator
Description
**
지수 (전원으로 인상)
~ + -
Ccomplement, 단항 플러스와 마이너스 (마지막 두의 메서드 이름은 + @이며, - @)
* / % //
곱하기, 나누기, 나머지, 몫
+ -
덧셈과 뺄셈
>> <<
좌우 비트 시프트
&
비트 'AND'
^ |
비트 전용 'OR'와 정기적 인 'OR'
<= < > >=
비교 연산자
<> == !=
평등 연산자
= %= /= //= -= += *= **=
할당 연산자
is is not
식별 연산자
in not in
맴버 연산자
not or and
논리 연산자

자료형

문자형

인덱싱

a = "12345"
print(a[-1]) #a문자열의 맨 뒷 문자
# 출력 5
print(a[0])
# 출력 1

슬라이싱

a[0:4:1]
#이상:미만:간격

이스케이프 코드

코드 설명
\n 문자열 안에서 줄을 바꿀 때 사용
\t 문자열 사이에 탭 간격을 줄 때 사용
\\ 문자 \를 그대로 표현할 때 사용
\' 작은따옴표(')를 그대로 표현할 때 사용
\" 큰따옴표(")를 그대로 표현할 때 사용
\r 캐리지 리턴(줄 바꿈 문자, 현재 커서를 가장 앞으로 이동)
\f 폼 피드(줄 바꿈 문자, 현재 커서를 다음 줄로 이동)
\a 벨 소리(출력할 때 PC 스피커에서 '삑' 소리가 난다)
\b 백 스페이스
\000 널 문자
print("I ate %s apples.\nso I was sick for %s days." % (num, day))

문자열 포맷 코드

코드 설명
%s 문자열(String)
%c 문자 1개(character)
%d 정수(Integer)
%f 부동소수(floating-point)
%o 8진수
%x 16진수
%% Literal % (문자 % 자체)
num = 10
day = "three"
a = "I ate %s apples. so I was sick for %s days." % (num, day)
print(a)

#출력
I ate 10 apples. so I was sick for three days.

#  "hi"를 3자의 너비로 형식화, "hi"는 2글자이므로 "hi" 앞에 공백을 하나 추가하여 총 3글자를 만든다.
a = "%3s" % "hi"
# 출력 (공백을 _로 표현)
_hi

# 총 8자의 너비로 형식화, 정밀도 = 소수점4자리
a = "%8.4f" % 3.42135234
#출력 (공백을 _로 표현)
__3.4214

함수

ord(문자)

  • 하나의 문자를 인자로 받고 해당 문자에 해당하는 유니코드 정수를 반환

len(문자열)

  • 매개변수로 들어온 문자열의 길이를 반환

count(문자열)

  • 매개변수로 들어온 문자열이 포함된 횟수를 counting

find(문자열)

  • 매개변수로 들어온문자 위치(시작 인덱스) 알려주기
a="Python is best choice"
print(a.find('b'))  #10번째 글자에 b있음
print(a.find('3'))  #없으면 -1

문자열.replace("A","B")

  • 문자열에 포함 된 AB로 변환

a = ",".join("abcd")

  • abcd에 , 문자(열) 삽입
  • 출력: a,b,c,d

문자열.upper()

  • 전부 대문자로 변환

문자열.lower()

  • 전부 소문자로 변환

int(정수형)

함수

chr(정수)

  • 하나의 정수를 인자로 받고 해당 정수에 해당하는 유니코드 문자를 반환

round()

  • 반올림

리스트(list), 튜플(tuple), 딕셔너리(Dictionary)

파이썬의 리스트(list)와 튜플(tuple)은 모두 순서가 있는 시퀀스 자료형(sequence types)이다. 여기서 '순서가 있다'는 것은 내부 요소의 위치(인덱스)에 따라서 참조가 가능하다는 의미이다. 하지만 두 자료형에는 중요한 차이점이 있다.

리스트(list)

리스트는 가변성(mutable)이라는 특징을 가지고 있다. 즉, 리스트의 요소는 생성된 후에도 변경이 가능하다. 리스트는 대괄호([])나 list() 함수를 사용하여 생성할 수 있다.

# 리스트 생성
my_list = [1, 2, 3, 'four', 5.0]
print(my_list)

# 리스트 요소 변경
my_list[3] = 'fourth'
print(my_list)

# 실행 결과
[1, 2, 3, 'four', 5.0]
[1, 2, 3, 'fourth', 5.0]

리스트에서 많이 사용되는 연산자, 메서드

연산자/함수설명예제
len()리스트의 길이 계산len([1, 2, 3])
+리스트 더하기[1, 2] + [3, 4]
*리스트 반복[1, 2] * 3
in, not in소속/소속하지 않음 검사1 in [1, 2, 3]
[]인덱스[1, 2, 3][0]
min(), max()최소, 최대값 계산min([1, 2, 3])
append(값)리스트의 끝에 값 추가list.append(4)
insert(index, 값)인덱스에 값 추가list.insert(0, 4)
pop(index)인덱스 값 가져오고 삭제list.pop(0)
remove(값)리스트에서 값을 찾아 삭제list.remove(1)
clear()리스트의 모든 값 삭제list.clear()
count(값)리스트에서 일치하는 값의 수list.count(1)
index(값)리스트에서 일치하는 값의 인덱스list.index(1)
reverse()리스트의 요소 순서를 뒤집음list.reverse()
sort()리스트의 요소를 오름차순으로 정렬list.sort()
sort(reverse=True)리스트의 요소를 내림차순으로 정렬list.sort(reverse=True)
extend(iterable)리스트에 다른 iterable의 모든 요소 추가list.extend([4, 5])
copy()리스트의 얕은 복사본을 만듦new_list = list.copy()
list(반복가능 객체)다른 반복 가능한 객체로부터 리스트 생성list('abc')
sorted(리스트)리스트의 정렬된 새로운 복사본 반환sorted([3, 1, 2])
filter(함수, 리스트)함수에 따라 리스트에서 요소를 필터링filter(lambda x: x > 1, [1, 2, 3])
map(함수, 리스트)모든 리스트 요소에 함수 적용map(lambda x: x * 2, [1, 2, 3])

튜플(tuple)

튜플은 불변성(immutable)이라는 특징을 가지고 있다. 이는 튜플의 요소는 한 번 생성되면 변경이 불가능하다는 것을 의미한다. 튜플은 소괄호(())나 tuple() 함수를 사용하여 생성할 수 있지만, 소괄호 없이도 생성이 가능하다.

# 튜플 생성
my_tuple = (1, 2, 3, 'four', 5.0)
print(my_tuple)

# 튜플 요소 변경 시도 (오류 발생)
my_tuple[3] = 'fourth'

#실행 결과
(1, 2, 3, 'four', 5.0)
TypeError: 'tuple' object does not support item assignment

이런 차이 때문에, 리스트는 데이터의 변경이 빈번하게 이루어지는 경우에 사용하기 좋다. 반면, 튜플은 데이터의 변경이 없거나 변경을 허용하지 않아야 하는 경우에 사용한다.

또한, 튜플은 리스트에 비해 상대적으로 메모리를 적게 차지하므로, 큰 데이터를 다루는 경우에는 튜플을 사용하는 것이 효율적일 수 있다. 이렇게 메모리 효율성에서 차이가 나는 이유는, 리스트는 동적 배열(dynamic array)로 구현되어 있어서 추가적인 메모리를 예약하며, 튜플은 정적 배열(static array)로 구현되어 있어서 필요한 만큼의 메모리만을 사용하기 때문이다.

마지막으로, 튜플은 딕셔너리의 키로 사용될 수 있지만 리스트는 그렇게 사용될 수 없다. 이는 튜플이 해시 가능(hashable)하기 때문이다. 리스트는 가변성을 가지므로 해시 가능하지 않다. 따라서, 리스트를 딕셔너리의 키로 사용하려고 하면 TypeError가 발생하게 된다.

딕셔너리(Dictionary)

파이썬의 딕셔너리(Dictionary)는 키(Key)와 값(Value)의 쌍으로 이루어진 자료형이다. 딕셔너리는 키를 통해 값을 빠르게 찾아내는 해시 테이블(Hash Table) 형태의 자료구조로 구현되어 있다.

딕셔너리는 중괄호({}) 안에 콜론(:)을 사용하여 키와 값을 연결하거나, dict() 함수를 사용하여 생성할 수 있다. 키는 변경 불가능(immutable)한 자료형을 사용해야 한다. 예를 들어, 문자열, 숫자, 튜플 등은 딕셔너리의 키로 사용될 수 있지만, 리스트나 딕셔너리 같은 변경 가능(mutable)한 자료형은 키로 사용될 수 없다.

딕셔너리의 주요 특징과 장점

  1. 같은 값에 키가 두개 이상이 될 경우 어떤 키의 값을 불러와야 할지 모르기 때문에 오류가 발생한다.
  2. 키 값에 리스트 형식은 불가능하다
  • 키를 통한 빠른 데이터 접근

    • 딕셔너리는 키를 이용해 값을 빠르게 찾아낼 수 있다.
    • 이런 특성 덕분에, 키와 값 사이의 관계를 표현하는데 유용하다.
  • 키 중복 불가

    • 딕셔너리에서 키는 고유한 값이므로, 같은 키를 두 번 이상 사용할 수 없다.
    • 같은 키로 데이터를 저장하면, 마지막에 저장한 값만 유지된다.
  • 순서 없음

    • 딕셔너리는 데이터의 순서를 보장하지 않는다.
    • 즉, 입력한 순서와 출력하는 순서가 다를 수 있다.
    • 하지만 파이썬 3.7 버전부터는 딕셔너리의 입력 순서가 유지된다는 사실을 공식적으로 보장하였다.
  • 변경 가능

    • 딕셔너리의 값은 변경이 가능하다.
    • 딕셔너리에 저장된 값을 변경하거나, 새로운 키-값 쌍을 추가하거나 제거할 수 있다.
# 딕셔너리 생성
my_dict = {'one': 1, 'two': 2, 'three': 3}

# 값 접근
print(my_dict['one'])  # 1

# 값 변경
my_dict['one'] = 'first'
print(my_dict)  # {'one': 'first', 'two': 2, 'three': 3}

# 키-값 쌍 추가
my_dict['four'] = 4
print(my_dict)  # {'one': 'first', 'two': 2, 'three': 3, 'four': 4}

# 키-값 쌍 제거
del my_dict['four']
print(my_dict)  # {'one': 'first', 'two': 2, 'three': 3}

Dictionary 주요 메서드

메서드설명예제
keys()딕셔너리의 모든 키를 반환dict.keys()
values()딕셔너리의 모든 값을 반환dict.values()
items()딕셔너리의 모든 키-값 쌍을 반환dict.items()
get(key)주어진 키에 해당하는 값을 반환(키가 없으면 None 반환)dict.get('key')
pop(key)주어진 키에 해당하는 값을 반환하고, 해당 키-값 쌍을 삭제dict.pop('key')
update(dict2)딕셔너리에 다른 딕셔너리(dict2)의 키-값 쌍을 추가dict.update({'key': 'value'})
clear()딕셔너리의 모든 키-값 쌍을 삭제dict.clear()
# 딕셔너리 생성
my_dict = {'one': 1, 'two': 2, 'three': 3}

# 메서드 사용 예제
print(my_dict.keys())  # dict_keys(['one', 'two', 'three'])
print(my_dict.values())  # dict_values([1, 2, 3])
print(my_dict.items())  # dict_items([('one', 1), ('two', 2), ('three', 3)])
print(my_dict.get('one'))  # 1
print(my_dict.get('four'))  # None
print(my_dict.pop('one'))  # 1
print(my_dict)  # {'two': 2, 'three': 3}
my_dict.update({'four': 4, 'five': 5})
print(my_dict)  # {'two': 2, 'three': 3, 'four': 4, 'five': 5}
my_dict.clear()
print(my_dict)  # {}

조건문

# if 문
if condition:
    # 실행할 코드

# elif 문
if condition1:
    # condition1이 참일 경우 실행할 코드
elif condition2:
    # condition1이 거짓이고 condition2가 참일 경우 실행할 코드

# else 문
if condition1:
    # condition1이 참일 경우 실행할 코드
elif condition2:
    # condition1이 거짓이고 condition2가 참일 경우 실행할 코드
else:
    # condition1과 condition2 모두 거짓인 경우 실행할 코드

각각의 조건(condition)에서는 논리 연산자(logical operators) and, or, not 를 사용하여 복잡한 조건을 표현할 수 있다. 또한 비교 연산자(comparison operators)인 ==(동등), !=(부등), <(미만), >(초과), <=(이하), >=(이상) 등을 사용하여 값을 비교할 수 있다.

#예시

x = 10
if x > 0 and x < 10:
    print("x는 0보다 크고 10보다 작다.")
elif x >= 10:
    print("x는 10 이상이다.")
else:
    print("x는 0 이하이다.")

반복문

for문

#방법1
for i in range(10) :
    print(i);

#방법2
for i in range(0,10) :
    print(i, end=' ');

#출력
0 1 2 3 4 5 6 7 8 9 

while문

while condition:
    # 실행할 코드


# 예시
count = 0
while count < 5:
    print(f'Count: {count}')
    count += 1  # count를 1씩 증가

break와 continue

break

현재의 반복문을 완전히 중단하고, 반복문 블록 이후의 코드를 실행한다.

for i in range(5):
    if i == 3:
        break
    print(i)

continue

현재의 반복 회차를 중단하고, 반복문의 다음 회차로 넘어간다.

for i in range(5):
    if i == 3:
        continue
    print(i)

input과 다양한 입출력

함수

input().split()

  • .split() 메서드는 받은 문자열을 공백을 기준으로 나누어 리스트로 반환

map()

  • 함수와 이터러블(반복 가능한 객체, 여기서는 리스트)을 인자로 받아, 이터러블의 모든 요소에 주어진 함수를 적용한 결과를 반환
  • map(int, ...): map(int, input().split())은 input().split()의 결과로 얻은 모든 문자열을 정수로 변환
    • input().split()라는 리스트에 int라는 함수를 적용한거

함수

함수설명예제
abs()절대값을 반환한다.abs(-5) # 5
all()반복 가능한(iterable) 객체(리스트, 튜플 등)의 모든 요소가 참이면 True를 반환한다.all([1, 2, 3]) # True
any()반복 가능한 객체의 어떤 요소가 참이면 True를 반환한다.any([0, 1, 2]) # True
bin()정수를 이진 문자열로 변환한다.bin(3) # '0b11'
chr()주어진 정수에 해당하는 문자를 반환한다.chr(65) # 'A'
complex()복소수를 생성한다.complex(1, 2) # (1+2j)
divmod()두 숫자의 나눗셈 몫과 나머지를 튜플로 반환한다.divmod(5, 2) # (2, 1)
enumerate()반복 가능한 객체를 인덱스와 요소의 쌍으로 반환한다.list(enumerate(['a', 'b'])) # [(0, 'a'), (1, 'b')]
filter()함수의 조건을 만족하는 요소만 반환한다.list(filter(lambda x: x > 0, [-1, 0, 1])) # [1]
hex()정수를 16진수 문자열로 변환한다.hex(255) # '0xff'
isinstance()객체가 특정 클래스/데이터 타입이면 True를 반환한다.isinstance(1, int) # True
map()함수를 반복 가능한 객체의 모든 요소에 적용한 결과를 반환한다.list(map(lambda x: x ** 2, [1, 2, 3])) # [1, 4, 9]
oct()정수를 8진수 문자열로 변환한다.oct(8) # '0o10'
ord()문자에 해당하는 정수(유니코드)를 반환한다.ord('A') # 65
pow()첫 번째 인자의 두 번째 인자 제곱 값을 반환한다.pow(2, 3) # 8
round()숫자를 가장 가까운 정수로 반올림한다.round(3.5) # 4
sorted()반복 가능한 객체를 정렬한 후, 새 리스트를 반환한다.sorted([3, 1, 2]) # [1, 2, 3]
sum()반복 가능한 객체에 있는 모든 요소의 합을 반환한다.sum([1, 2, 3]) # 6
type()객체의 데이터 타입을 반환한다.type(1) # <class 'int'>
zip()반복 가능한 객체들을 병렬로 요소를 묶어 반환한다.list(zip([1, 2], ['a', 'b'])) # [(1, 'a'), (2, 'b')]
reversed()시퀀스를 역순으로 반환한다.list(reversed([1, 2, 3])) # [3, 2, 1]
len()반복 가능한 객체의 요소 수를 반환한다.len([1, 2, 3]) # 3
max()반복 가능한 객체의 최댓값을 반환한다.max([1, 2, 3]) # 3
min()반복 가능한 객체의 최솟값을 반환한다.min([1, 2, 3]) # 1
range()연속된 정수 시퀀스를 반환한다.list(range(5)) # [0, 1, 2, 3, 4]
slice()시퀀스를 슬라이싱한다.nums = [0, 1, 2, 3, 4]; s = slice(1, 4); nums[s] # [1, 2, 3]
eval()문자열로 표현된 파이썬 식을 평가하고 결과를 반환한다.eval('1 + 2') # 3
globals()현재 전역 심볼 테이블을 나타내는 딕셔너리를 반환한다.globals()
locals()현재 로컬 심볼 테이블을 나타내는 딕셔너리를 반환한다.locals()
open()파일을 열거나 새 파일을 생성한다.file = open('test.txt', 'r')
print()값을 출력한다.print("Hello, world!")
ascii()객체의 인쇄 가능한 표현을 반환한다.ascii("안녕") # '\uc548\ub155'
bytearray()bytearray 객체를 생성한다.bytearray(b"Hello") # bytearray(b'Hello')
bytes()bytes 객체를 생성한다.bytes(b"Hello") # b'Hello'
callable()객체가 호출 가능하면 True를 반환한다.callable(len) # True
classmethod()메서드를 클래스 메서드로 변환한다.[Here would be a class definition]
compile()소스를 코드나 AST 객체로 컴파일한다.compile('print(55)', '', 'eval')
delattr()객체에서 명명된 속성을 삭제한다.delattr(test_obj, "name")
dict()새 딕셔너리를 생성한다.dict(a='apple', b='banana') # {'a': 'apple', 'b': 'banana'}
dir()객체의 속성을 나열한다.dir('Hello World')
float()숫자나 문자열을 부동소수점 수로 변환한다.float('2.5') # 2.5
getattr()객체의 속성 값을 반환한다.getattr(test_obj, "name")
hasattr()객체에 지정된 속성이 있으면 True를 반환한다.hasattr(test_obj, "name")
hash()객체의 해시 값을 반환한다.hash('test')
help()객체의 도움말을 반환한다.help(str)
id()객체의 고유 아이디(메모리 주소)를 반환한다.id('test')
input()사용자 입력을 받는다.input("Enter something:")
int()숫자나 문자열을 정수로 변환한다.int('10') # 10
isinstance()첫 번째 인자의 타입이 두 번째 인자와 같으면 True를 반환한다.isinstance(1, int) # True
issubclass()첫 번째 클래스가 두 번째 클래스의 하위 클래스면 True를 반환한다.[Here would be a class definition]
iter()반복자 객체를 반환한다.iter('Hello')
len()객체(문자열, 리스트 등)의 길이를 반환한다.len('Hello') # 5
list()리스트를 생성한다.list('Hello') # ['H', 'e', 'l', 'l', 'o']
setattr()객체의 속성 값을 설정한다.setattr(test_obj, "name", "Test")
str()객체를 문자열로 변환한다.str(100) # '100'
tuple()튜플을 생성한다.tuple('Hello') # ('H', 'e', 'l', 'l', 'o')
type()객체의 타입을 반환한다.type('Hello') # <class 'str'>
vars()객체의 dict 속성을 반환한다.vars(test_obj)
bool()값을 불리언으로 변환한다.bool(1) # True
memoryview()메모리 보기 객체를 반환한다.memoryview(bytes(5))
staticmethod()메서드를 정적 메서드로 변환한다.[Here would be a class definition]
super()부모 클래스의 메서드를 호출한다.[Here would be a class definition]

본 후기는 정보통신산업진흥원(NIPA)에서 주관하는 <AI 서비스 완성! AI+웹개발 취업캠프 - 프론트엔드&백엔드> 과정 학습/프로젝트/과제 기록으로 작성 되었습니다.
#정보통신산업진흥원 #NIPA #AI교육 #프로젝트 #유데미 #IT개발캠프 #개발자부트캠프 #프론트엔드 #백엔드 #AI웹개발취업캠프 #취업캠프 #개발취업캠프

0개의 댓글