2024.11.26 TIL (+프로그래머스,SQL 질문과 답)

SMALL

 

[ TIL ]

오늘은 파이썬 강의를 다시 들으면서 헷갈리던 연산자를 외우기 위해 정리했다.

다른분들은 술술 나오시던데 나는 자꾸 이게 어떻게 기재하는거였더라?? 하면서 까먹는다. 쉭쉭

 

1. 산술 연산자

숫자 값을 계산할 때 사용.

연산자 의미 예제
(a = 10, b = 3)
결과
+ 덧셈 a + b 13
- 뺄셈 a - b 7
* 곱셈 a * b 30
/ 나눗셈 a / b 3.3333...
// a // b 3
% 나머지 a % b 1
** 거듭제곱 a ** b 1000

 

2. 비교 연산자

두 값을 비교하여 참(True) 또는 **거짓(False)**을 반환.

연산자 의미 예제
(a = 10, b = 3)
결과
== 같음 a == b False
!= 같지 않음 a != b True
> a > b True
< 작음 a < b False
>= 크거나 같음 a >= b True
<= 작거나 같음 a <= b False

 

3. 논리 연산자

여러 조건을 조합할 때 사용.

 

연산자 의미 예제 결과
and 그리고 (모두 참) (a > 5) and (b < 5) True
or 또는 (하나만 참) (a > 5) or (b > 5) True
not 부정 (참 ↔ 거짓) not(a > 5) False

 

4. 할당 연산자

값을 변수에 저장하거나 업데이트할 때 사용.

연산자 의미 예제 (a = 10) 결과
= 값 할당 a = 5 a = 5
+= 더한 후 할당 a += 3 (즉, a = a + 3) a = 13
-= 뺀 후 할당 a -= 3 (즉, a = a - 3) a = 7
*= 곱한 후 할당 a *= 3 a = 30
/= 나눈 후 할당 a /= 3 a = 10.0
//= 몫을 할당 a //= 3 a = 3
%= 나머지를 할당 a %= 3 a = 1
**= 거듭제곱 후 할당 a **= 3 a = 1000

 

5. 비트 연산자

이진수 비트 단위에서 연산을 수행.

연산자 의미 예제 (a = 5, b = 3) 결과
& 비트 AND a & b 1
` ` 비트 OR `a
^ 비트 XOR a ^ b 6
~ 비트 NOT ~a -6
<< 왼쪽 시프트 a << 1 10
>> 오른쪽 시프트 a >> 1 2

 

6. 멤버 연산자

특정 값이 시퀀스(리스트, 문자열 등)에 속하는지 확인.

연산자 의미 예제 결과
in 포함 여부 확인 'a' in 'apple' True
not in 포함되지 않음 확인 'x' not in 'apple' True

 

7. 식별 연산자

객체가 동일한 메모리 위치에 있는지 확인.

연산자 의미 예제 결과
is 동일 객체 확인 a is b False
is not 동일 객체 아님 확인 a is not b True

 

 

요약

  • 산술 연산자: +, -, *, /, //, %, **
  • 비교 연산자: ==, !=, >, <, >=, <=
  • 논리 연산자: and, or, not
  • 할당 연산자: =, +=, -=, *=, /=, ...
  • 비트 연산자: &, |, ^, ~, <<, >>
  • 멤버 연산자: in, not in
  • 식별 연산자: is, is not

[ 프로그래머스 ]

아직 코드카타 공지가 안떠서 혼자 좀좀따리 풀어보고 있는데, 배열 두배 만들기 문제를 풀고 다른 사람의 풀이를 보다가 흥미로운? 알 수 없는 의견이 있어서 쭈볏쭈볏 튜터님을 찾아가서 여쭤보게 되었다.

 

배열 두배 만들기  문제 설명

정수 배열 numbers가 매개변수로 주어집니다.

numbers의 각 원소에 두배한 원소를 가진 배열을 return하도록 solution 함수를 완성해주세요.

 

내가 제출한 답안

def double(x):
    return x * 2

def solution(numbers):
    return list(map(double, numbers))

 

자세히 풀이하면,

 

더블이라는 함수를 정의하고 이 함수는 하나의 입력값 x를 받게 한다.

그다음 입력값에 2를 곱한 값을 반환 받는다.

 

솔루션 함수를 정의하고 이 함수는 정수 배열 넘버스를 받게 한다.

맵은 두개의 인수를 받는데 앞에 더블이라는 함수, 뒤에 넘버라는 데이터를 받는다.

이것을 리스트로 감싸서 리스트로 반환 받는다.

 

정답 제출 후 다른 사람의 풀이를 보는데 흥미로운 댓글이 있었다.

 

개인적으로는 map과 lambda는 웬만하면 같이 안쓰는걸 추천합니다.

 

 

이런 댓글이 있었다. 그래서 람다 함수(Lambda Function)를 찾아보니까 익명 함수를 생성하기 위한 파이썬 기능이었다.

장점이 아래와 같은데, 현재 내가 푸는 문제는 파이썬 입문문제라 엄청나게 간결하다!

 

  • 코드가 짧고 간결해짐.
  • 함수 이름을 정의할 필요 없는 경우 적합.

 

그래서 결국 튜터님을 찾아뵙게 되었는데 저 댓글과 반대되는 의견을 주셨다.

약간 코드컨벤션과도 연관이 있었는데 파이썬 개발자들이 람다를 쓰는 것을 지양하는 것은 맞다고 하셨다.

이유는 코드 작성후 나아아아아중에 봤을 때 가독성이 너무 떨어져서 좋지 못하다고 하셨다. 

그리고 이름이 없어서 디버깅도 어려운 단점이 있다고 하셨다. 

 

하지만 map과 있을 때에는 오히려 쓰면 코드 쓰기가 쉽다고 추천을 하셨다.

map 안에 인수에 이미 함수와 데이터가 정의(?)되어 있어서 가독성이 떨어지는걸 보완한다는 이유였다.

 

질문 이후에 바로 정리하려고 했는데, 팀회의시간이라 기억이 자꾸 휘발돼서 정리하는데 기억을 열심히 더듬었다. 휴


[ SQL ]

3주차 실습2 문제를 풀다가 띠용했던 문제다.

문제 내용은 이메일 데이터에서 @ 뒤의 도메인만 추출하라는 문제였다.

강의를 멈춰놓고 푸는데 도저히 풀 방법이 생각이 안나서 재생해서 답을 들었다.

맙소사 선생님께서 아이디의 갯수를 통일해두셨다는 것이다!

이건 그냥 강의에서 다룰 코드?를 쓰기위해 문제를 어거지로 맞춘게 아닌가....그래서 결국 질문방에 질문을 올리고 답을 받았다.

질문 내용

 

답변

내가 알고 싶었던 것은 아이디 갯수를 맞춰서 어거지로 몇번째 값부터 추출하는게 아니라

진짜 이메일 데이터가 있을 때 문제에서 요구하는 것을 추출하는 법을 알고 싶었다.

튜터님께서 가려운 곳을 시원하게 잘 긁어주셨다.

사실 11월 8일에 알게된 사실인데 오늘 저 코드가 생각이 안나서 복습할겸 다시 보고 캡쳐해오게 되었다.

 


[ 오늘의 목표와 달성도 ]

팀노션 - 나의 데일리 스크럼
깃허브 잔디

담임매니저님이 깃허브와 백준, 프로그래머스 연동을 알려주신 날부터 열심히 잔디를 채우고 있다.

이번 캠프를 진행하면서 나의 작은 목표는 소소하지만 꾸준하게 찐한 잔디를 심어서 풍성한 잔디밭으로 수료하는 것이다!

LIST

'Today I learned' 카테고리의 다른 글

2024.11.28 TIL (판다스-데이터변형)  (0) 2024.11.28
2024.11.27 TIL (NumPy, arr, shape)  (1) 2024.11.27
2024.11.22 TIL(AI 9기)  (0) 2024.11.22
2024.11.21 TIL(AI 9기)  (1) 2024.11.21
2024.11.20 TIL(AI 9기)  (1) 2024.11.20