Python

[ Python ] SHDS_코테특강

hanjuCoding 2024. 10. 14. 15:18

얕은복사 vs 깊은복사

깊은 복사(Deep Copy)는 '실제 값'을 새로운 메모리 공간에 복사

얕은 복사(Shallow Copy)는 '주소 값'을 복사

a=[1,2,3,4]
b = a #얕은복사
c = a.copy() #깊은복사
print(id(a)) #1611153021184
print(id(b)) #1611153021184
print(id(c)) #1611153019264

 

is 와 == 차이

 is는 변수가 저장된 장소가 같은 지 확인

 ==는 변수의 값이 같은 지 확인

 

비트연산자

논리연산자는 and, or 지만,

비트연산자는 파이썬에서는 &, | 를 사용함

ex ) 7 -> 0111, 13 -> 1101

7 & 13 = 0111 & 1101 = 0101 = 5

 

이거를 언제사용하냐? 2차원 배열 같은곳에서 서로 값을 각 배열의 0번 값이 true인 애들 뽑을때 등등 사용함

 

enumerate

인덱스를 뽑고 싶을떄 사용하는 함수

people = ['펭수','뽀로로','뚝딱이','텔레토비']

def func1(people):
    temp=[]
    for idx, val in enumerate(people):
        print("대기번호 %d번 : %s"%(idx+1,val))
        temp.append((idx+1,val))
    return temp

lines=func1(people)
print(lines)

# 결과:
# 대기번호 1번 : 펭수
# 대기번호 2번 : 뽀로로
# 대기번호 3번 : 뚝딱이
# 대기번호 4번 : 텔레토비
# [(1, '펭수'), (2, '뽀로로'), (3, '뚝딱이'), (4, '텔레토비')]

 

 

lambda

map : 리스트,튜플,스트링 등 자료형 각각의 원소에 동일한 함수를 적용

items = [1,2,3,4,5]
squared_map=list(map(lambda x: x**2,items))
print(squared_map)

#결과
# [1, 4, 9, 16, 25]

 

 

list comprehension

for문을 한줄로 쓰는방법

if문과 함께 사용 가능

lc_1 = [x for x in range(10)]
print(lc_1)

#결과
#[0, 1, 2, 3, 4, 5, 6, 7, 8, 9]

lc_2 = [x for x in range(10,21)if x%2==0]
print(lc_2)
#결과
# [10, 12, 14, 16, 18, 20]

 

 

set

중복이 제거되는 리스트

ex)프로그래머스 두 개 뽑아서 더하기

def solution(numbers):
    answer = set()
    for i in range(len(numbers)-1):
        for j in range(i+1,len(numbers)):
            answer.add(numbers[i]+numbers[j])
    result = list(answer)
    return sorted(result)

중복을 제거하기 위해 리스트를 set으로 바꿨다가 다시 리스트로 바꿈