배열

Hyun·2023년 6월 17일
0

파이썬

목록 보기
3/17

배열

index

해당 값의 인덱스를 반환한다

  • 중복된 값이 있으면 가장 작은 인덱스를 반환
  • 배열이름.index(a, start) => 배열[start: ] 에서의 a의 인덱스 반환
  • 배열이름.index(a, start, stop) => 배열[start:end] 에서의 a의 인덱스 반환(당연하게 인덱스 start~stop-1까지 검색)

ex)

arr = [1,2,3,4,2,5,2,6,7]

idx = arr.index(2)
print(idx) # 1
idx = arr.index(2, 2)
print(idx) # 4
idx = arr.index(2,5,8)
print(idx) # 6

len()

배열의 길이를 구할 수 있다.
방법: len(배열이름)

arr = ["a", "b", "c"]
print(len(arr)) #3

배열의 원소로 배열을 가지는 경우

배열의 원소로 동일한 숫자의 원소를 가지는 배열을 가지는 경우 예) arr = [[1,5],[4,6],[7,3]], for 문을 이용해 내부 원소인 배열의 값들에 한번에 접근할 수 있다. 단, 내부 배열들의 원소 개수가 동일해야 한다.

ex)

arr = [[1,5], [4,6], [7,3]]
for f, s in arr:
  print(f, s) # 1 5, 4 6, 7 3
  
arr = [[1,5,6], [4,2,6], [9,7,3]]
for f, s, t in arr:
  print(f, s, t) # 1 5 6, 4 2 6, 9 7 3

sort()

리스트를 오름차순/내림차순으로 정렬해준다. 리스트 자체(자신)를 정렬하기 때문에 반환값은 None이다.

방법
오름차순: 리스트명.sort()
내림차순: 리스트명.sort(reverse=True)

ex)

arr = [4,6,1,9,3,5,10,0]

result = arr.sort()
print(arr) #[0,1,3,4,5,6,9,10]
print(result) #None
arr.sort(reverse=True)
print(arr) #[10,9,6,5,4,3,1,0]

sorted()

리스트를 오름차순/내림차순으로 정렬해준다. 리스트 원본 값은 그대로이고 정렬된 리스트를 반환한다.

방법
오름차순: sorted(리스트명)
내림차순: sorted(리스트명, reverse = True)

ex)

arr = [4,6,1,9,3,5,10,0]

new_arr = sorted(arr)
print(new_arr) #[0,1,3,4,5,6,9,10]
print(arr) #[4,6,1,9,3,5,10,0]

new_arr = sorted(arr, reverse=True)
print(new_arr) #[10,9,6,5,4,3,1,0]
print(arr) #[4,6,1,9,3,5,10,0]

insert

원하는 인덱스의 위치에 값을 집어넣는다. 해당 위치에 있던 값은 뒤로 밀려난다(한칸씩 다 밀리게 된다)
방법: 배열이름.insert(삽입할 위치, 값)

ex)

arr = ["a", "b", "c", "d", "e"]

arr.insert(1, "f")
print(arr) # a,f,b,c,d,e

arr.insert(-2, "g")
print(arr) # a,f,b,c,g,d,e

slicing

인덱스와 슬라이스:를 이용해 특정 범위의 요소을 반환
(a가 양수인 경우 가정)

  • arr[a: ] => a번째 인덱스부터 끝까지
  • arr[-a] => size-a번째 인덱스
  • arr[-a: ] => size-a번째 인덱스부터 끝까지
  • arr[ :-a] => 첫번째부터 size-a인덱스까지
  • arr[a:b] => a번째 인덱스부터 b-1번째 인덱스까지
  • arr[ :b] => 첫번째부터 b-1번째 인덱스까지

ex)

arr = ["a", "b", "c", "d", "e"]

print(arr[0:3]) #a,b,c
print(arr[1:]) #b,c,d,e
print(arr[:2]) #a,b
print(arr[-3: ]) #c,d,e
print(arr[ :-3]) #a,b

del

인덱스슬라이스:를 이용해 특정 범위의 요소를 삭제(remove는 값을 이용)
방법 : del 배열이름[...]

  • del arr[a] => a번째 인덱스의 요소 삭제
  • del arr[-a] => size-a번째 인덱스의 요소 삭제
  • del arr[a:b] => a번째부터 b-1번째 인덱스까지의 요소 삭제

ex)

arr = ["a", "b", "c", "d", "e"]

del arr[1]
print(arr) #a,c,d,e
del arr[-2]
print(arr) #a,d,e
del arr[0:2]
print(arr) #e

arr = ["a", "b", "c", "d", "e"]
del arr[ :-2]
print(arr) #d,e

arr = ["a", "b", "c", "d", "e"]
del arr[-3: ]
print(arr) #a,b

pop

del 과 동일하게 인덱스를 이용하여 요소를 삭제하지만 pop 은 삭제한 요소의 값을 반환한다는 점에서 삭제한 요소의 값을 반환하지 않는 del 과 차이가 있다.
방법: 배열이름.pop(...)

  • 배열이름.pop() => 맨 뒤에 있는 요소를 삭제하고 반환
  • 배열이름.pop(index) => index번째의 요소를 삭제하고 반환

del 과 pop 은 특정 인덱스를 삭제한 다음, 배열을 재조정한다.

ex)

arr = [1,2,3,4,5]

result = arr.pop(4)
print(result) #5
print(arr) #[1,2,3,4]

result = arr.pop(1)
print(result) #2
print(arr) #[1,3,4]

주의)

배열에서 여러개의 인덱스 위치의 요소들을 삭제해야 할 경우, del과 pop등을 사용하면 삭제할때마다 배열이 재조정되기 때문에 주의하여야 한다.

따라서 삭제할 인덱스들 중에서 가장 큰 값부터 작은값까지 뒤에서부터 차례대로 삭제해야 배열의 재조정에 상관없이 올바르게 삭제할 수 있다.

remove()

값(value)을 이용해 배열의 원소 삭제
방법: 배열이름.remove(삭제할 값)

  • 값(value)으로 array의 요소를 삭제(del은 인덱스와 슬라이스: 이용)
  • array안에 중복되는 값이 여러개 존재해도 첫번째 값에 대해서만 삭제
    (remove함수를 이용해 해당하는 모든 값을 삭제하고자 할땐 for문 이용)

ex)

arr = ["a", "b", "c", "d", "e"]
arr.remove("a")
print(arr) #b,c,d,e

arr.remove(arr[3])
print(arr) #b,c,d

append

배열의 맨 끝에 append안에 들어있는 값을 추가한다
방법: 배열이름.append(추가할 값)

ex)

arr = ["a", "b", "c", "d", "e"]
arr.append("f")
print(arr) #a,b,c,d,e,f

arr.pop()
print(arr) #a,b,c,d,e

pop

인덱스를 이용해 배열의 특정 요소를 삭제(del과 유사)
방법:

  • 배열이름.pop() => 맨 뒤에 위치한 요소를 삭제(stack 생각)
  • 배열이름.pop(삭제할 인덱스) => 해당 인덱스의 값을 삭제

ex)

arr = ["a", "b", "c", "d", "e"]
arr.pop()
print(arr) #a,b,c,d

arr.pop(3)
print(arr) #a,b,c,e
profile
better than yesterday

0개의 댓글