본문 바로가기

알고리즘(파이썬)

자바와 다른 파이썬

자바에서 arr[0]=0 arr[1]=1 arr[2]=2 ... arr[20]=20 같은 배열을 만들 땐

for문을 사용해서 배열에 값을 직접 할당했다.

int[] arr = new int[21]
for (int i = 0; i < 21; i++) {
	arr[i] = i;
}

 

하지만 파이썬에서는 range()를 활용하여 자동으로 값이 들어간 리스트를 만들 수 있다.

a=list(range(21))

range(21)은 0부터 20까지의 정수 시퀀스(0, 1, 2, ..., 20)을 생성한다. 파이썬에서 range(n)은 기본적으로 0부터 n-1까지의 정수를 순서대로 생성하는 함수이다.

여기에 list()를 씌우면 이터레이터에서 값을 하나씩 꺼내 리스트로 변환해준다. 즉 list(range(21))을 실행하면 [0, 1, 2, ..., 20]이 만들어진다.


a=10 b=15라고 가정하고 a, b의 값을 교환하고자 할 때

 

자바는 변수 값을 직접 교환할 수 없어서 보통 임시 변수(tmp)를 사용해야 했다.

int a = 10, b = 15;
int tmp = a;
a = b;
b = tmp;

 

하지만 파이썬에서는 임시 변수 없이도 값을 교환할 수 있다!!

a, b=10, 15
a, b=b, a

 

++) 리스트에서 특정 범위가 주어지고 

해당 범위의 값을 역으로 배치할 때

s, e=map(int, input().split())	# s ~ e까지의 리스트 값을 역으로 배치
for i in range(e-s+1)//2:
	a[s+i], a[e-i]=a[e-i], a[s+i]

'''	3 ~ 7까지의 리스트 값을 역으로 배치한다고 하면
(7-3+1)//2 = 2 이므로 
(3, 7) (4, 6) 교환하면 된다.

2 ~ 7까지의 리스트 값을 역으로 배치한다고 하면
(7-2+1)//2 = 3 이므로
(2, 7) (3, 6) (4, 5) 교환하면 된다.

이상하게 e-s어쩌고 사이즈를 재서 했는데 더 간편한 방법이 있었다......
s+i e-i 기억하자	'''

리스트에서 pop()하면?

pop(), pop(0)은 리스트에서 요소를 제거하는 역할을 한다.

 

pop()은 기본적으로 리스트의 마지막 요소를 제거하고 반환하며,

pop(0)은 리스트의 첫 번째 요소를 제거하고 반환한다.

arr=[10, 20, 30, 40]
last_element=arr.pop()		# 40
first_element=arr.pop(0)	# 10