x: 숫자
return: 뒤집어진 숫자를 반환!
예를 들어,
x: 1234
return: 4321
x: -1234
return: -4321
x: 1230
return: 321
def reverse(x):
str_x = str(x)
if str_x[0] == '-':
if str_x[-1] == 0:
y = int('-'+ str_x[-2:0:-1])
return str(y)
else:
y = int('-'+str_x[-1:0:-1])
return str(y)
elif str_x[-1] == 0:
y = int(str_x[-2::-1])
return str(y)
else:
y = int(str_x[::-1])
return str(y)
# -3820
## 3820
def reverse(string):
if string[0] == '-':
string = string[::-1] # 0283-
new_string = int(string[-1]+string[:-1]) # -283 정수
return str(new_string) # -283 문자열
string = int(string[::-1]) ## 283 정수
return str(string) ## 283 문자열
list, tuple, string, set, dictionary와 같은 sequence 자료형에는 slice기능을 자주 사용한다. slice는 말 그대로 무언가를 잘라낸다는 뜻으로, sequence 객체의 일부를 잘라내는것을 의미한다.
>>> a = [0, 10, 20, 30, 40, 50, 60, 70, 80, 90]
>>> a[0:4] # 인덱스 0부터 3까지 잘라서 새 리스트를 만듦
[0, 10, 20, 30]
이 때 주의할 점은, 끝 인덱스는 가져오려는 범위에 포함되지 않는다는 점이다.
역으로 slice 할때도 이는 적용된다.
>>> a = [0, 10, 20, 30, 40, 50, 60, 70, 80, 90]
>>> a[-1:-5:-1] # 인덱스 0부터 3까지 잘라서 새 리스트를 만듦
[90, 80, 70, 60]
따라서, 처음부터 끝까지 가져오려면, 1을 더 크게 지정해야한다. 참고로, 끝 인덱스가 3이라고 하더라도 4를 지정해도 오류가 나지 않는다.
다음과 같은 방법으로 시작인덱스 자신을 리턴할 수 있다.
>>> a = [0, 10, 20, 30, 40, 50, 60, 70, 80, 90]
>>> a[1:1] # 인덱스 1부터 0까지 잘라서 새 리스트를 만듦
[] # 해당 인덱스가 없으므로 빈 리스트 리턴
>>> a[1:2] # 인덱스 1부터 1까지 잘라서 새 리스트를 만듦
[10] # 인덱스 1을 리턴
양수 인덱스와 음수 인덱스를 섞어서 사용도 가능하다.
>>> a = [0, 10, 20, 30, 40, 50, 60, 70, 80, 90]
>>> a[4:-1] # 인덱스 4부터 -2까지 요소 5개를 가져옴
[40, 50, 60, 70, 80]
>>> a = [0, 10, 20, 30, 40, 50, 60, 70, 80, 90]
>>> a[2:8:3] # 인덱스 2부터 3씩 증가시키면서 인덱스 7까지 가져옴
[20, 50]
시작 또는 끝 인덱스를 생략할 수 있다. 이 방법은 길이를 몰라도 되기 때문에 유용하다.
>>> a[7:] # 인덱스 7부터 마지막 요소까지 가져옴
[70, 80, 90]
시작과 끝 둘다 생략하면 전체리스트를 가져오게 된다.
>>> a[:] # 리스트 전체를 가져옴
[0, 10, 20, 30, 40, 50, 60, 70, 80, 90]
>>> a = [0, 10, 20, 30, 40, 50, 60, 70, 80, 90]
>>> a[:7:2] # 리스트의 처음부터 인덱스를 2씩 증가시키면서 인덱스 6까지 가져옴
[0, 20, 40, 60]
끝인덱스를 지정하지 않을 경우 마지막 객체도 포함되는 점을 잊지말자.
>>> a[7::2] # 인덱스 7부터 2씩 증가시키면서 리스트의 마지막 요소까지 가져옴
[70, 90]
>>>a[7:-1:2]
[70]
전체 객체에서 증가폭 만큼 slice할때 사용한다.
>>> a[::2] # 리스트 전체에서 인덱스 0부터 2씩 증가시키면서 요소를 가져옴
[0, 20, 40, 60, 80]
인덱스가 감소하므로 끝 인덱스보다 시작 인덱스를 더 크게 지정해야 한다. 즉, a[5:-1:-1] 과같이는 지정할 수 없다.
특히 다음과 같이 시작 인덱스와 끝 인덱스를 생략하면서 인덱스 증가폭을 -1로 지정하면, 리스트가 반대로 뒤집힌다.
>>> a[::-1]
[90, 80, 70, 60, 50, 40, 30, 20, 10, 0]