map() 함수
- map() 함수
- 파이썬 내장 함수 중 하나
- 주어진 함수를 반복 가능한(iterable) 객체(예: 리스트, 튜플)의 모든 요소에 적용하여 새로운 이터레이터(iterator)를 반환
- 구조:
map(함수, 반복 가능한 객체)
- 함수: 적용할 함수를 지정
- 반복 가능한 객체: 함수를 적용할 요소들이 포함된 iterable 객체를 지정
- 함수를 요소별로 적용하고 그 결과를 새로운 iterable 객체로 생성할 때 사용
- 반복 작업을 더 간단하고 효율적으로 수행하는 데 도움이 됨
# 리스트의 각 요소에 대해 제곱을 계산하는 함수
def square(x):
return x * x
# 리스트 정의
numbers = [1,2,3,4]
# map 함수의 개념 -> map (함수1, 함수1 에 적용할 값(들) 또는 요소(들))
# map 함수 사용 (각 요소에 square 함수 적용)
result = map(square, numbers) # 반환 값은 이터레이터(iterable)
# 이 의미는 square 함수에 number리스트의 요소를 적용하겠다는 뜻
# 그런데 square 함수는 반환값이 x * x 이므로 1,2,3,4 를 보내면
# 1,4,9,16을 반환받고 이를 result에 저장함
print('result type : ',type(result)) # 이때 result는 map 객체임
# result는 (이터레이터)-> (map 객체) 이므로 리스트로 변환하여 출력
print(list(result)) # 출력: [1, 4, 9, 16]

파이썬 기초
주석
- 코드를 설명하는 용도
- Code의 양이 많거나 복잡하여 짧은 시간 내 이해하기 힘들 때 이해를 돕기 위해 사용
- 코드를 잠시 보류하는 용도
변수
입출력
숫자형
문자형
문자 활용
- 문자열 인덱싱
- 문자열을 문자 단위로 처리할 때(하나의 문자에 접근하고 싶을 때) 매우 유용
- 문자열: 여러 개의 문자들이 모여 만들어진 하나의 라인
- 한 글자만 추출하는 방법
- 문자열 슬라이싱
- 문자열에서 특정한 일부분을 추출하는 방법
- 끝 인덱스는 '추출에 포함되지 않음'

[start:end:step]
step 알아보기

- 문자열 사칙연산
- 일부 사칙연산이 가능: +, *

형 변환
- 하나의 데이터 타입(자료형)을 다른 데이터 타입(자료형)으로 변환하는 과정
- 프로그래밍에서 아주 중요한 개념!
- 파이썬은 다양한 타입을 다루기 때문에 자주 사용하게 됨
- 파이썬에서는 내장 함수를 이용해 쉽게 형변환 가능
POINT
☞ 형변환은 데이터 타입을 변경하는 과정
☞ 파이썬에서는 내장 함수를 사용해 형변환 수행
☞ 모든 타입이 다른 모든 타입으로 변환될 수 있는 건 아님
→ 변환하려고 하는 데이터의 형태마다 그 가능성이 달라짐
☞ 형변환은 사용자의 입력을 처리하거나 데이터 분석, 텍스트 처리 등 다양한 상황에서 사용될 수 있음
int()
- 실수를 정수로 변환할 때 무조건 소수점 이하가 버려지는 특징이 있음
- 숫자로 바꿀 수 없는 데이터가 있는 경우 오류 발생

- 문자열을 정수로 변환해야 할 때는 해당 문자열이 실제로 숫자만 포함하고 있어야 한다는 점을 유의해야 함

형변환의 중요성 예시

- 문자열에
+ 연산자를 이용하면 문자열과 문자열이 더해지는 연산

input() 함수는 사용자의 입력을 항상 '문자열'로 반환하기 때문에 실제로 숫자 연산을 하기 위해서는 형변환이 필요함

str()
- 다른 데이터 형태에서 '문자열'로의 형변환은 거의 모든 자료형에 대해서 가능함
bool()
- 값이 없는 경우: "거짓"으로 평가되어 False를 반환
- bool() 함수에 전달된 객체
- 0
- False
- 빈 문자열
- 빈 리스트
- 빈 튜플
- 빈 딕셔너리
- None 등
- 값이 있는 경우: "참"으로 평가되어 True를 반환
The bool() function returns the boolean value of a specified object.
The object will always return True, unless:
The object is empty, like [], (), {}
The object is False
The object is 0
The object is None
dict()
- 딕셔너리로 변환할 수 있는 데이터의 형태는 극히 제한적임
- 가장 일반적인 방법은 키와 값 쌍의 리스트/튜플 데이터를 변환하는 것

set()
- set 자료형의 특징을 기억해 두면 좋음
- 중복을 허용하지 않음
- 순서를 보장하지 않음
- 알파벳의 순서(문자열의 순서)가 보장되지 않고 뒤죽박죽으로 바뀜
- 출력의 순서가 입력의 순서와 다를 수 있음


연산자
논리 연산자
고급 연산자
비트 연산자
- 숫자를 이진수로 변환한 후에 각 비트 단위로 연산 수행

~ 연산자
- 숫자의 모든 비트를 뒤집음

- 비트 연산자는 복잡하지만 알고리즘 최적화나 파이썬을 통해 하드웨어(그래픽 카드 등)을 제어해야 할 때 유용하게 사용될 수 있음: 특정 알고리즘이나 하드웨어 제어에 유용
파이썬은 내부적으로 2의 보수를 어떻게 표현할까?
파이썬은 임의 정밀도를 지원하기 때문에 부호는 별도 필드로 갖고 있으며, 비트 연산이 필요할 때만 2의 보수로 변환하는 작업을 함.
※ 파이썬에서 비트 not 연산(~ 연산자)
- 입력 값의 각 비트를 반전시키고, 이 값은 2의 보수로 표현됩니다.
- 2의 보수란 숫자의 합을 2의 제곱수로 만들어 주기 위해 더해줘야 하는 수입니다.
(각 자릿수의 값을 1에서 빼버리고 1을 더하여 얻을 수 있는 보수)
1010의 2의 보수는 0110
→ 1111 - 1010 +1
10101010의 2의 보수는 01010110
→ 11111111 - 10101010 + 1
num = 5
not_num = ~num
print(bin(num))
print(bin(not_num))
- 5를 2진수로 표현하면
0101
- ~5를 구하기 위해 전부 뒤집으면
1010
- 이걸 우리가 아는 방식으로 해석하기 위해서는 역으로 풀어야 함
1010에서 1을 빼 주면 1001
- 여기서 1의 보수를 취하면
0110
- 이건 6인데 앞에 부호가 1이 붙었으니(MSB) 결론은 "-6"
num = -4
not_num = ~num
print(not_num)
print(bin(num))
print(bin(not_num))
- '-4'를 연산자로 뒤집어보려면 먼저 컴퓨터가 인식하는 '-4'를 구해야 함
- 양수 4에 해당하는 2의 보수 구하기
0 0100 →2의 보수→ 1 1100
(한 칸 떨어진 0/1은 MSB(sign bit)를 이해하기 위해 추가해 둠)
1 1100을 뒤집으면 0 0011
- MSB(sign bit)가 0 → 따로 보수를 취해서 음수를 구할 필요가 없음
- 따라서 3이 출력됨
할당 연산자
- 변수에 값을 할당하는 연산자
- 코드를 보다 간결하게 만들어 주는 특징이 있음
- 다른 연산자와 결합해서 쓸 수 있음
연산자 우선순위

식별 연산자
- 두 객체가 동일한 메모리 위치를 가리키는지 확인하는 연산자
- 파이썬은 동일한 문자열이 있는 경우 일반적으로 같은 메모리 위치를 참조하는 특성이 있음

- 리스트나 딕셔너리 같은 객체는 동일한 값을 가지더라도 다른 메모리 위치에 값을 위치시킴

- C, C++ 언어의 포인터와 유사한 개념

c = coffee
coffee가 가리키고 있던 메모리 상의 주소를 c에게도 동일하게 공유하겠다는 의미
멤버 연산자
- 특정한 값이 시퀀스 자료형에 포함되어 있는지 확인하는 연산자

리스트
튜플
딕셔너리
집합
조건식
반복문