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. |
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) |
Operator | Example |
in | x in y, x가 시퀀스 y의 멤버이면 1이 됩니다. |
not in | x not in y, x가 시퀀스 y의 멤버가 아닌 경우 1이 됩니다. |
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(문자열)
find(문자열)
a="Python is best choice"
print(a.find('b')) #10번째 글자에 b있음
print(a.find('3')) #없으면 -1
문자열.replace("A","B")
A
를 B
로 변환a = ",".join("abcd")
,
문자(열) 삽입a,b,c,d
문자열.upper()
문자열.lower()
chr(정수)
round()
파이썬의 리스트(list)와 튜플(tuple)은 모두 순서가 있는 시퀀스 자료형(sequence types)이다. 여기서 '순서가 있다'는 것은 내부 요소의 위치(인덱스)에 따라서 참조가 가능하다는 의미이다. 하지만 두 자료형에는 중요한 차이점이 있다.
리스트는 가변성(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]) |
튜플은 불변성(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)는 키(Key)와 값(Value)의 쌍으로 이루어진 자료형이다. 딕셔너리는 키를 통해 값을 빠르게 찾아내는 해시 테이블(Hash Table) 형태의 자료구조로 구현되어 있다.
딕셔너리는 중괄호({}) 안에 콜론(:)을 사용하여 키와 값을 연결하거나, dict() 함수를 사용하여 생성할 수 있다. 키는 변경 불가능(immutable)한 자료형을 사용해야 한다. 예를 들어, 문자열, 숫자, 튜플 등은 딕셔너리의 키로 사용될 수 있지만, 리스트나 딕셔너리 같은 변경 가능(mutable)한 자료형은 키로 사용될 수 없다.
- 같은 값에 키가 두개 이상이 될 경우 어떤 키의 값을 불러와야 할지 모르기 때문에 오류가 발생한다.
- 키 값에 리스트 형식은 불가능하다
키를 통한 빠른 데이터 접근
키 중복 불가
순서 없음
변경 가능
# 딕셔너리 생성
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}
메서드 | 설명 | 예제 |
---|---|---|
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 이하이다.")
#방법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 condition:
# 실행할 코드
# 예시
count = 0
while count < 5:
print(f'Count: {count}')
count += 1 # count를 1씩 증가
현재의 반복문을 완전히 중단하고, 반복문 블록 이후의 코드를 실행한다.
for i in range(5):
if i == 3:
break
print(i)
현재의 반복 회차를 중단하고, 반복문의 다음 회차로 넘어간다.
for i in range(5):
if i == 3:
continue
print(i)
input().split()
.split()
메서드는 받은 문자열을 공백을 기준으로 나누어 리스트로 반환map()
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웹개발취업캠프 #취업캠프 #개발취업캠프