[ProjectH4C Study] 파이썬 코딩 도장 #4

Jennie Yoon·2021년 1월 31일
0

Study

목록 보기
4/7

슬라이스 사용하기

• 슬라이스(slice) : 무엇인가를 일부 잘라낸다는 뜻

  • 시퀀스객체[시작index:끝 index]
    -> 끝 index는 포함되지 X, 실제로 가져오는 인덱스 = 끝-1까지
    (시작index~끝 index-1)
>>> a = [0,10,20,...,90]
>>> a[0:4]
[0,10,20,30]
  • 시작index = 끝index
    -> 아무것도 가져오지 X
>>> a=[0,10,20,...,90]
>>> a[1:1] #index를 1부터 0까지 잘라서 새 리스트를 만듦
  • 음수 index
>>>a[4:-1]
[40,50,60,70,80]
  • 인덱스 증가폭 사용하기
    시퀀스객체[시작index:끝index:인덱스증가폭]
>>>a=[0,10,20,...,90]
>>>a[2:8:3] #인덱스 2부터 3씩 증가시키면서 인덱스 7까지 가져옴.
[20,50]
>>>a[2:9:3]
[20,50,80]
  • 시퀀스객체[ :끝인덱스]
>>>a=[0,10,20,...,90]
>>>a[:7]
[0,10,20,30,40,50,60]
  • 시퀀스객체[시작index: ]
>>>a[7: ]
[70,80,90]
  • 시퀀스객체[ : ]
>>>a[:]
[0,10,20,...,90]
  • 인덱스를 생략하면서 증가폭 사용하기
    시퀀스객체[ :끝인덱스:증가폭]
>>>a=[0,10,20,30,...,90]
>>>a[ :7:2] #리스트의 처음부터 index를 2씩 증가하면서 인덱스 6까지 가져옴
[0,20,40,60]
  • 시퀀스객체[시작index: :증가폭]
>>>a[7::2] #인덱스 7부터 2씩 증가하면서 리스트의 마지막 요소까지 가져옴
[70,90]
  • 시퀀스객체[ : :증가폭]
>>>a[ ::2] #리스트 전체에서 인덱스 0부터 2씩 증가시키면서 요소를 가져옴
[0,20,40,60,80]
  • 시퀀스객체[ : : ]
>>>a[ : : ] #리스트 전체를 가져옴
[0,10,20,...,90]
  • 슬라이스의 인덱스 증가폭을 음수로 지정하면?
    ⁕ 인덱스가 감소하므로 끝 인덱스보다 시작 인덱스를 더 크게 지정해야 한다. 즉, a[5:1:-1]과 같이 시작 인덱스부터 끝 인덱스까지 감소하도록 지정한다. 그리고 끝 인덱스는 가져오려는 범위에 포함되지 않는다.
>>>a=[0,10,20,30,...,90]
>>>a[5:1:-1]
[50,40,30,20]

>>>a[::-1]
[90,80,...,0]
  • range에 슬라이스 사용하기
    -> range는 리스트, 튜플과 달리 요소가 모두 표시되지 않고 생성 범위만 표시됨.
>>>r = range(10)
>>>r
range(0,10)
>>>r[4:7] #인덱스 4부터 6까지 숫자 3개를 생성하는 range객체를 만듦
range(4,7)

>>>list(r[ :7:2])
[0,2,4,6]
  • 슬라이스에 요소 할당하기
    시퀀스객체[시작index:끝인덱스] = 시퀀스객체
>>>a=[0,10,20,...,90]
>>>a[2:5]=['a','b','c']
>>>a
[0,10,'a','b','c',50,60,70,80,90]
->범위를 지정해서 요소를 할당할 경우에는 원래 있던 리스트가 변경되며 새 리스트는 생성되지 않는다.
  • del로 슬라이스 삭제하기
    del 시퀀스객체[시작index:끝index]
>>>a=[0,10,20,30,...,90]
>>>del a[2:5] #인덱스 2부터 4까지 삭제
>>>a
[0,10,50,60,...,90]

⁕ 튜플, range, 문자열은 del로 슬라이스를 삭제할 수 X

0개의 댓글