hgk0404
hgk0404.tistory
hgk0404

공지사항

전체 방문자
오늘
어제
  • 전체 카테고리 N
    • [컴퓨터비전] N
    • [Computer Science]
      • [컴퓨터네트워크]
      • [알고리즘]
      • [자료구조 in C]
      • [C & C++]
      • [이산수학]
      • [Math]
    • [머신러닝]
      • [Numpy, Pandas]
    • [Cloud]
      • [AWS]
      • [NCP]
      • [Kubernetes]
      • [Terraform]
    • [Dev]
      • [가상환경]
      • [Linux]
      • [Docker]
    • [Python]
    • [Coding Test]
      • [백준]
      • [프로그래머스]
      • [SQL]
    • [WEB]
    • [자격증, 일상]
    • [엑셀]
    • [금융]

인기 글

최근 글

최근 댓글

250x250
hELLO · Designed By 정상우.
hgk0404

hgk0404.tistory

[Python]

[Python] 파이썬 리스트 슬라이싱 - (슬라이싱 추가예정)

2022. 7. 3. 23:59
728x90

리스트 슬라이싱 : 리스트에 있는 여러개의 요소를 접근하기 위한 방법

 

 

슬라이싱은 리스트, 문자열, 튜플 등 연속적인 객체들에 범위를 지정해서 가져오는 기능입니다. 슬라이싱을 하면 객체를 가져오게 되므로 일부분을 복사해서 가져온다고 생각하면 됩니다.

 

 

1. 반복문을 사용하지 않고 5번째 회사까지 출력

Com = [ 'SamSung', 'Naver', 'Kakao', 'Line', 'Amore_pacific', 'Toss', 'Cj', 'Lg', 'Coupang', 'Nexon' ]
print(Com[0:5])

 

 

결과)

['SamSung', 'Naver', 'Kakao', 'Line', 'Amore_pacific']

 

 

파이썬의 리스트와 마찬가지로 첫번째 인덱스는 0으로 시작합니다.

 

 

그리고 뒷부분은 5로 지정해줬는데 -1을 한 인덱스까지만 출력하게됩니다. 그래서 마지막 회사는 인덱스 4인 'Amore_pacific'이 출력됩니다.

 

 

예제2)

Com = [ 'SamSung', 'Naver', 'Kakao', 'Line', 'Amore_pacific', 'Toss', 'Cj', 'Lg', 'Coupang', 'Nexon' ]
print(Com[5:9])

 

 

결과)

['Toss', 'Cj', 'Lg', 'Coupang']

 

 

i~j가 범위일때 시작은 정직하게 i번째 인덱스부터 마지막은 i-1번째 인덱스까지가 됩니다.

 

 

그래서 [5:9]일때 마지막이 'Nexon'이 아닌 'Coupang'이 됩니다.

 

 

3. 

Com = [ 'SamSung', 'Naver', 'Kakao', 'Line', 'Amore_pacific', 'Toss', 'Cj', 'Lg', 'Coupang', 'Nexon' ]
print(Com[5:])

 

 

결과)

['Toss', 'Cj', 'Lg', 'Coupang', 'Nexon']

 

 

마지막 인덱스 값을 지정해 주지 않으면 마지막 인덱스로 구분합니다. 그래서 5번째 인덱스인 'Toss'부터 마지막 인덱스인 'Nexon'까지 출력됩니다.

 

 

4. 

Com = [ 'SamSung', 'Naver', 'Kakao', 'Line', 'Amore_pacific', 'Toss', 'Cj', 'Lg', 'Coupang', 'Nexon' ]
print(Com[:4])

 

 

결과)

['SamSung', 'Naver', 'Kakao', 'Line']

 

 

시작 인덱스값을 지정해주지 않으면 처음 인덱스로 지정됩니다. [ ; 4] 이니 첫번째 'SamSung'부터 인덱스 3을 가지는 'Line'까지 출력됩니다.

 

 

5. 

Com = [ 'SamSung', 'Naver', 'Kakao', 'Line', 'Amore_pacific', 'Toss', 'Cj', 'Lg', 'Coupang', 'Nexon' ]
print(Com[5:-1])

 

 

결과)

['Toss', 'Cj', 'Lg', 'Coupang']

 

 

끝 인덱스에 -1을 넣으면 마지막 원소에서 한칸 앞에 있는 원소를 의미합니다.

 

 

파이썬 리스트에서 인덱스 -1은 마지막 원소를 의미하는데 끝 인덱스는 j-1을 해주기 때문에 마지막에서 한칸 앞으로 가게됩니다. 그래서 'Nexon'이 아니라 'Coupang'이 나오게 됩니다.

 

 

Extended slices

 

 

arr[A:B:C]처럼 리스트 슬라이싱을 3개의 요소로 하는것을 의미합니다.

 

 

arr[A:B:C]에서 각 알파벳은 A는 시작, B는 마지막 그리고 C는 간격을 의미합니다.

 

 

arr[A:B:C]는 인덱스A부터 B-1까지 C의 간격으로 배열을 만들어라

 

 

A와 B가 공백이면 위의 arr[:]에서와 같이 처음과 끝을 의미합니다.

 

 

그리고 C가 공백이라면 한칸 간격을 의미합니다.

 

 

1. 

Com = [ 'SamSung', 'Naver', 'Kakao', 'Line', 'Amore_pacific', 'Toss', 'Cj', 'Lg', 'Coupang', 'Nexon' ]
print(Com[::2])

 

 

결과)

['SamSung', 'Kakao', 'Amore_pacific', 'Cj', 'Coupang']

 

 

간격을 2로 설정해서 출력했습니다. 첫 요소인 'SamSung'을 시작으로 격자로 출력되는것이 보입니다.

 

 

2. 

Com = [ 'SamSung', 'Naver', 'Kakao', 'Line', 'Amore_pacific', 'Toss', 'Cj', 'Lg', 'Coupang', 'Nexon' ]
print(Com[1::2])

 

 

결과)

['Naver', 'Line', 'Toss', 'Lg', 'Nexon']

 

 

[1::2]이므로 두번째 요소인 'Naver'부터 2칸씩 건너뛰어 'Nexon'을 출력합니다.

 

 

3. 

arr[::-1]는 처음부터 끝까지 -1칸 간격으로(역순으로) 배열을 만들어라는 의미입니다.

arr[::1]이 처음부터 끝까지 1칸 간격으로 배열을 만드는 것이므로 음수를 붙여서 역순이 됩니다.

Com = [ 'SamSung', 'Naver', 'Kakao', 'Line', 'Amore_pacific', 'Toss', 'Cj', 'Lg', 'Coupang', 'Nexon' ]
print(Com[::-1])

 

 

결과)

['Nexon', 'Coupang', 'Lg', 'Cj', 'Toss', 'Amore_pacific', 'Line', 'Kakao', 'Naver', 'SamSung']

 

 

리스트의 역순으로 출력되었습니다. [::-1]은 자주 사용되니 암기해 두는것이 좋을것 같습니다.

 

 

print(sorted(Com, reverse=True))와는 결과가 다릅니다.

 

 

4. 

Com = [ 'SamSung', 'Naver', 'Kakao', 'Line', 'Amore_pacific', 'Toss', 'Cj', 'Lg', 'Coupang', 'Nexon' ]
print(sorted(Com, reverse=True))

 

 

결과)

['Toss', 'SamSung', 'Nexon', 'Naver', 'Line', 'Lg', 'Kakao', 'Coupang', 'Cj', 'Amore_pacific']

sorted함수에 reverse를 사용한것은 사전의 역순으로 출력을 해주지만 arr[::-1]는 단순하게 현재 배열에서 정렬을 빼고 반대로만 출력을 해줍니다.

 

 

5. 

Com = [ 'SamSung', 'Naver', 'Kakao', 'Line', 'Amore_pacific', 'Toss', 'Cj', 'Lg', 'Coupang', 'Nexon' ]
print(Com[::-2])

 

 

결과)

['Nexon', 'Lg', 'Toss', 'Line', 'Naver']

 

 

역순으로 2칸씩 출력이 됩니다.

 

 

6. 

Com = [ 'SamSung', 'Naver', 'Kakao', 'Line', 'Amore_pacific', 'Toss', 'Cj', 'Lg', 'Coupang', 'Nexon' ]
print(Com[5::-1])

 

 

결과)

['Toss', 'Amore_pacific', 'Line', 'Kakao', 'Naver', 'SamSung']

 

 

5번 인덱스인 'Toss'부터 1칸씩 역순으로 출력됩니다.

 

 

7.

Com = [ 'SamSung', 'Naver', 'Kakao', 'Line', 'Amore_pacific', 'Toss', 'Cj', 'Lg', 'Coupang', 'Nexon' ]
print(Com[5::-2])

 

 

결과)

['Toss', 'Line', 'Naver']

 

 

5번 인덱스인 'Toss'부터 2칸씩 역순으로 출력됩니다. 마지막 'SamSung'은 건너뛰어서 출력되지 않고 'Naver'가 마지막으로 출력이 됩니다.

 

 

범위를 넘어선 슬라이싱일때

범위를 넘어가더라고 문자열이 있는 곳까지 출력이 가능합니다.

arr = '12345678'
print(arr[:10])

 

 

결과)

12345678

 

 

인덱스 오류가 나올 줄 알았는데 이런것도 가능하다니 파이썬 슬라이싱에 놀랐습니다.

 

 

728x90
저작자표시 동일조건 (새창열림)

'[Python]' 카테고리의 다른 글

[Python] Counter 모듈 사용법  (0) 2022.07.05
[Python] 파이썬 for-else  (0) 2022.07.05
[Python] 파이썬 sort(), sorted() 함수 사용법  (0) 2022.07.03
[Python] 파이썬 replace함수  (0) 2022.07.03
[Python] find함수와 index함수  (0) 2022.07.02
'[Python]' 카테고리의 다른 글
  • [Python] Counter 모듈 사용법
  • [Python] 파이썬 for-else
  • [Python] 파이썬 sort(), sorted() 함수 사용법
  • [Python] 파이썬 replace함수
hgk0404
hgk0404
공부기록

티스토리툴바