<파이썬의 인수 전달>은
1) 인수가 이뮤터블일 때(ex) int)
: 매개변수 값을 변경하면 -> 다른 객체를 생성하고, 그 객체를 참조함
2) 인수가 뮤터블일 때(ex) list)
: 매개변수 값을 변경하면 -> 객체 자체를 업데이트함.
: 리스트에서 임의의 원솟값을 업데이트할 때
입력 : 리스트 x, 업데이트할 인덱스, 새로운 값
출력 : 업데이트된 리스트 x
def change(lst, idx, val):
''' lst[idx]의 값을 val로 업데이트 해준다 '''
lst[idx] = val
return lst
x = [0, 1, 2]
print(change(x, 0, 3))
<소수prime number 나열하기>
입력 : n
출력 : 정수 n 이하의 소수를 나열하기
소수 - n보다 작은 수로 나누었을 때 나누어떨어지는 수가 자신과 1뿐임
def prime(n):
for i in range(2, n):
if n % i == 0:
print("n은 소수가 아닙니다.")
break
elif i == n-1 and n % i != 0:
print("n은 소수입니다.")
prime(5)
ㅎ 모르겠다 ㅠㅠ
def prime(n):
for j in range(2, n+1):
for i in range(2, j):
if n % i == 0:
#n은 소수가 아님
break
elif i == n-1 and n % i != 0:
#n은 소수임
print(n)
prime(4)
예제 코드
for n in range(2, 1001):
for i in range(2, n):
if n % i == 0:
break
else:
print(n)
알고리즘 개선하기 1 - '어떤 소수로도 나누어 떨어지지 않음'
prime = []
prime.append(2)
for n in range(3, 101, 2):
for i in prime:
if n % i == 0:
break
else:
prime.append(n)
print(n)
예제 코드
counter = 0
ptr = 0
prime = [None] * 500
prime[ptr] = 2
ptr += 1
for n in range(3, 101, 2):
for i in range(1, ptr):
counter += 1
if n % prime[i] == 0:
break
else:
prime[ptr] = n
ptr += 1
for i in range(ptr):
print(prime[i])
print(counter)
알고리즘 개선하기 2 - 'n의 제곱근 이하의 어떤 소수로도 나누어 떨어지지 않습니다'
counter = 0
ptr = 0
prime = [None] * 500
prime[ptr] = 2
ptr += 1
for n in range(3, 101, 2):
if math.sqrt(n) >= prime[i]:
for j in range(1, i)
for i in range(1, ptr):
counter += 1
if n % prime[i] == 0:
break
else:
prime[ptr] = n
ptr += 1
for i in range(ptr):
print(prime[i])
print(counter)
<리스트의 원소와 복사>
객체가 갖는 멤버의 값을 새로운 객체로 복사할 때
1) 얕은 복사 - 참조값만 복사하는 방식
: 얕은 복사의 예시
x = [[1, 2, 3], [4, 5, 6]]
y = x.copy()
x[0][1] = 9
print(x)
print(y) #x와 y 출력값 똑같음
2) 전체 복사 / 깊은 복사 - 객체가 갖는 모든 멤버(값과 참조 형식 모두)를 복사하는 방식
import copy
x = [[1, 2, 3], [4, 5, 6]]
y = copy.deepcopy(x)
x[0][1] = 9
print(x)
print(y) #이때 y는 [[1, 2, 3], [4, 5, 6]]
'Computer Science > 자료구조' 카테고리의 다른 글
[4.27] 2장(기본 자료구조와 배열) 복습하기 (1) | 2021.04.27 |
---|---|
[4.26] 1장(알고리즘 기초) 복습 (1) | 2021.04.26 |
[4.23] 배열이란? (1) | 2021.04.23 |
[4.21] 02-1 배열하는 알고리즘 (2) (1) | 2021.04.21 |
[4.20] 02-2 배열이란? -(1) (1) | 2021.04.20 |