Moonss
Moon's
Moonss
전체 방문자
오늘
어제
  • 분류 전체보기 (24)
    • 환경 설정 (2)
    • git 사용법 (2)
    • Pandas (1)
    • 알고리즘 (7)
    • Pytorch (4)
    • GCP 환경 설정 (1)
    • cs231n (0)
    • Error (1)
    • 데이터 분석 (1)
    • 작성 전 글 저장 (0)

블로그 메뉴

  • ABOUT
  • POST
  • GUEST BOOK

공지사항

인기 글

태그

  • error
  • IP
  • git init
  • gcp
  • git config --unset
  • ifconfig
  • Python
  • 가상환경
  • Linux OS
  • Blender
  • 알고리즘
  • 환경설정
  • git
  • github
  • GPU
  • user.name
  • git config global --unset
  • git config --global
  • user.email
  • 3d
  • BIG-O
  • Linux
  • git config

최근 댓글

최근 글

티스토리

hELLO · Designed By 정상우.
Moonss

Moon's

알고리즘

정렬(오름,내림 차순) 및 리스트 요소 순서 뒤집기(reverse,reversed)

2022. 10. 5. 02:50

정렬

list를 오름,내림 차순으로 정렬 하기 위해서는 여러가지 정렬 알고리즘이(버블 정렬,삽입 정렬 등) 있지만 

간단히 파이썬 내장 함수를 정리하고자 한다. 

오름차순

파이썬 내장 함수 sort(),sorted() 를 이용하여 간단하게 사용가능 하다.

sort() 는 직접 그 리스트를 정렬한다. 꼭 int형이 아니더라도 정렬이 가능 하다. 

sorted()는 역활은 같지만 정렬된 리스트를 다른 저장 공간에 저장 한다. 

x = [1,4,5,2,3]
y = sorted(x) 
print(y) #[1, 2, 3, 4, 5]
print(x) #[1, 4, 5, 2, 3]

y= x.sort()
print(y) #None
print(x) #[1, 2, 3, 4, 5]
x = ['1','4','5','2','3']
y = sorted(x) 
print(y) #['1', '2', '3', '4', '5']
print(x) #['1', '4', '5', '2', '3']

y= x.sort()
print(x) #['1', '2', '3', '4', '5']

p = ['b','q','a','o','x','c']
q = sorted(p)
print(q) # ['a', 'b', 'c', 'o', 'q', 'x']
print(p) # ['b', 'q', 'a', 'o', 'x', 'c']

p.sort()
print(p) #['a', 'b', 'c', 'o', 'q', 'x']

내림차순

list를 내림차순으로 바꾸기 위해서는 reverse란 매개변수를 사용하면 된다. 

x = [1,4,5,2,3]
y = sorted(x,reverse = True) 
print(y) #[5, 4, 3, 2, 1]
print(x) #[1, 4, 5, 2, 3]

x.sort(reverse=True)
print(x) #[5, 4, 3, 2, 1]

리스트 요소 뒤집기 

위에서 본 오름,내림 차순 정렬이 아닌 단순히 list의 요소를 뒤집는 방법을 정리하고자 한다. 

슬라이싱 

슬라이싱은 맨 앞쪽부터 start index : end index : step 이다. 

따라서 step 에 음수가 들어가면 역순으로 슬라이싱 하여 출력이 된다.  

x = [5,4,8,9,6]
y = x[::-1] #x[start index : end index : step]
print(y) #[6, 9, 8, 4, 5]

y = x[::-2] #[6, 8, 5]
y = x[::2] #[[5, 8, 6]

reverse(), reversed() 

reverse() 함수는 sort()와 같이 리스트 자체를 역순으로 만들어 버린다.

reversed()는 sorted()와는 다르게 iterator type으로 출력이 나오게 된다. 

따라서 list()로 묶어주거나 for문에서 사용 가능하다.  

x = [5,4,8,9,6]
y = reversed(x)
print(y) #<list_reverseiterator object at 0x7fa00636c650>
print(list(y)) #[6, 9, 8, 4, 5]

y = x.reverse()
print(y) #None
print(x) #[6, 9, 8, 4, 5]

프로그래머스 문제 - Lv1 자연수 뒤집어 배열로 만들기 

자연수 n을 뒤집어 각 자리 숫자를 원소로 가지는 배열 형태로 리턴해주세요.

예를들어 n이 12345이면 [5,4,3,2,1]을 리턴합니다

input : 12345

output : [5,4,3,2,1]

def solution(n):
    answer = []
    for i in str(n):
        answer.append(int(i))
    answer = answer[::-1]
    return answer

처음엔 이렇게 슬라이싱을 사용하여 배열을 뒤집어 문제를 풀었다. 

슬라이싱을 한번 더 거치지 않고 풀 수 있는 함수를 찾아보다가 

range()의 반대 함수도 있을꺼 같아 더 찾아 보다가 reversed() 함수를 찾아보게 되었다. 

def solution(n):
    answer = []
    for i in reversed(str(n)):
        answer.append(int(i))
    return answer

iterater type은 reversed를 사용하면 요소 순서를 뒤집어서 빼낼 수 있는거 같다. 

저작자표시 (새창열림)

'알고리즘' 카테고리의 다른 글

Fibonacci numbers(피보나치 수)  (0) 2022.10.09
요소 개수 찾기 count() , Counter  (1) 2022.10.07
프로그래머스 - Lv1. 두 정수 사이의 합  (0) 2022.10.03
프로그래머스 - Lv1. 정수 제곱근 판별  (0) 2022.10.03
진수 변환  (0) 2022.03.15
    '알고리즘' 카테고리의 다른 글
    • Fibonacci numbers(피보나치 수)
    • 요소 개수 찾기 count() , Counter
    • 프로그래머스 - Lv1. 두 정수 사이의 합
    • 프로그래머스 - Lv1. 정수 제곱근 판별
    Moonss
    Moonss

    티스토리툴바