python 문법 :: 슬라이싱, 람다 익명함수, 비트연산자
python 슬라이싱[start:stop:step]
인덱스 0부터 시작, 맨 앞부터 사이사이 숫자 넣기
_a_ _b_ _c_ _d_ _e_
↑ ↑ ↑ ↑ ↑ ↑
0 1 2 3 4 5
[1 : 3] => bc
[ : 3] => abc
[ 3: ] => de
[1:5] => bcde
:: => 증가해라.
대괄호[] 안에 :: 콜론 표시이다.
1. 어떤 때에 쓰이나?
- 리스트다. [2, 4, 6, 8, ...]
2. [1:8:3] 무슨 뜻인가?
- 1부터 시작해서 8까지 3씩 증가하는 수를 리스트로 만들어내는 것이다.
->nlist = [1,2,3,4,5,6,7,8,9,10]
->nlist[1:8:3]
->출력 : [2, 5, 8]
3. [::-1] 무슨 뜻인가?
- 모든 숫자를 1만큼 역순으로 뽑아내는 것이다.
->nlist = [1,2,3,4,5,6,7,8,9,10]
->nlist[::-1]
-> 출력: [10, 9, 8, 7, 6, 5, 4, 3, 2, 1]
4. [::2]무슨 뜻인가?
- 모든 숫자를 2증가 만큼 뽑아낸다.
->nlist = [1,2,3,4,5,6,7,8,9,10]
->nlist[::-1]
-> 출력: [1,3,5,7,9]
5. [2::5]무슨 뜻인가?
-2부터 시작하여 5증가만큼 뽑아낸다.
->nlist = [1,2,3,4,5,6,7,8,9,10]
->nlist[2::5]
-> 출력: [3, 8]
6. [4::-2]무슨 뜻인가?
-4부터 시작하여 역순으로 -2감소만큼 뽑아낸다.
->nlist = [1,2,3,4,5,6,7,8,9,10]
->nlist[4::-2]
-> 출력: [5,3,1]
람다 익명함수(lambda)
파이썬에서 lambda는 "익명 함수(Anonymous Function)"를 만드는 키워드입니다. 말 그대로 이름이 없는 함수를 한 줄로 간단하게 만들 때 사용합니다.
✅ 기본 문법
lambda 매개변수: 반환값
예를 들어,
add = lambda x, y: x + y print(add(3, 5)) # 출력: 8
lambda x, y: x + y는 x와 y를 더하는 함수를 만들고, 그걸 add라는 변수에 저장한 것입니다.
map() 함수 => 반복문 for 같은 거
list -> [1,2,3,4,5] 이 형태로 내보내라.
array -> [{1,2,3}, {4,5,6}, 7] 또는 [ [ ], [ ] ] 이런 배열로 내보내라.
TestList = [1, 2, 3, 4, 5]
TestList = list(map(lambda num: num + 100, TestList))
print(TestList)
map(lambda num: num + 100, TestList)
-> 반복해라. num = num + 100 인데 num에 TestList를 하나씩 넣어서
101 나오고 102 나오고 103 나옴
list(결과값)
-> 이걸 리스트로 만들어라.
답 : {101,102,103,104,105}
for i in range (1,3) 은
for(i=1; i < 3 ; i++) 이것과 같으므로
1,2까지만 넣으면 된다.
a = 0
for i in range(1, 4): # i = 1, 2, 3
a = a + 1
print(a) # 3
- 이 경우 a는 1 → 2 → 3으로 올라가고,
- 마지막에 print(a) 하니까 최종값인 3만 출력됩니다.
a = 0
for i in range(1, 4):
a = a + 1
print(f"i: {i}, a: {a}")
#i: 1, a: 1
#i: 2, a: 2
#i: 3, a: 3
출력을 계속해서 하려면 for 문 안에 넣고 {i} 와 같이 묶어서 계속해서 출력되게 해야한다.
✅ 파이썬 비트 연산자 총정리
연산자 | 이름 | 설명 |
& | AND | 둘 다 1일 때만 1 |
` | ` | OR |
^ | XOR | 다를 때만 1 |
~ | NOT (반전) | 비트를 전부 뒤집음 (1→0, 0→1) |
<< | Left Shift | 왼쪽으로 비트 이동 (곱셈 효과) |
>> | Right Shift | 오른쪽으로 비트 이동 (나눗셈 효과) |
비트 연산자를 출력하려면 숫자를 2진법으로 바꿔야함.
2로 나눠서 나머지들을 모아서 만들면 된다.
즉, 숫자에 비트연산자가 껴있으면 무조건 2진법으로 바꾼 뒤 변경해서 계산해야함.
100을 이진법으로 하면 1100100 이렇게 되고
이걸 만약에 다시 10진법으로 바꾼다고 하면 맨 앞에서부터 1,2,4,8,16,32... 순서로 계산하면 된다.
___ ___ ___ ___ ___
↑ ↑ ↑ ↑ ↑
16 8 4 2 1
100은 10진법으로 계산하면 4+32+64 가 됨.
// => 나눗셈
% => 나머지
** => 거듭제곱(승)
for item in sub:
print(item, end='')
🔹 for item in sub:
- sub는 리스트나 문자열 같은 반복 가능한(iterable) 객체여야 합니다.
- item은 sub 안의 요소를 하나씩 꺼내는 변수입니다.
- 예를 들어 sub = ['a', 'b', 'c']라면,
item은 'a' → 'b' → 'c' 순으로 바뀌면서 반복합니다.
🔹 print(item, end='')
- print() 함수는 기본적으로 한 번 출력하고 나면 자동으로 줄바꿈(\n) 을 합니다.
- 그런데 end=''는 이 줄바꿈을 없애고, 출력 뒤에 아무것도 붙이지 말라는 의미입니다.
- 즉, 여러 개를 한 줄에 붙여서 출력하게 됩니다.
즉, item에 들어가는거 순서대로 뿌리라는 말. abcd 이런식으로