[Python] 리스트 추가하기
- Language/Python
- 2020. 10. 13.
리스트를 추가와 삭제를 당연히 할 수 있다.
그 방법에 여러가지 방법이 존재한다.
append, extend, insert가 있다.
arr = [10, 20, 30]
arr.append(500)
append는 리스트 끝에 요소 하나를 추가한다.
[10, 20, 30[ 에 500을 append 사용 할 경우 [10, 20, 30, 500] 이 된다.
그러나 여기서 조심해야할 점은 파이썬은 타입에 너무 자유롭다는 점이다.
arr = [10, 20, 30]
arr.append([100, 200])
>>[10, 20, 30,[100,200]]
그러므로 이렇게 append로 100, 200이 한 번에 들어올 경우에
리스트 안에 리스트를 넣는 결과도 낳을 수가 있다.
이에 대한 len(arr) 출력값은 4이다.
이는 비어있는 리스트에도 추가가 가능하다.
Extend
arr = [10, 20, 30]
arr.extend([500, 600])
>>>[10, 20, 30, 500, 600]
Extend 또한 리스트의 추가이다. 그러나 리스트를 연결한다라는 뜻에 더 강하다.
리스트에 리스트가 들어가지 않고 뒤에 그대로 연결 된 모습을 확인 할 수가 있다.
Insert
a = [10, 20, 30]
a.insert(2, 500)
>>>[10, 20, 500, 30]
Insert는 원하는 위치 중간에 값을 넣을 수가 있다. 이제 이를 잘 활용한다면 이와 같아진다.
a = [10, 20, 30]
a.insert(0, 500)
>>>[500, 10, 20, 30]
제일 처음에 500을 넣는 방식이다.
a = [10, 20, 30]
a.insert(len(a), 500)
append처럼 제일 마지막에 값을 넣는 방법이다. 여기서 조심해야 할 점은 insert는 하나의 요소를 집어 넣는 방식이기 때문에 extend가 아닌 append처럼 리스트가 insert가 될 수가 있다.
a = [10, 20, 30]
a.insert(1, [500, 600])
>>>10, 500, 600, 20, 30
insert를 사용 할 때는 반드시 숙지 해야 할 주의 사항이다.
리스트 삭제하기
리스트 삭제할 때 사용하는 메소드는 두 가지 경우가 있다.
a = [10, 20, 30]
a.pop()
>>>[10, 20]
pop는 리스트의 마지막 값을 지우는 방식이다. 그렇다고 하나 pop가 중간에 삭제 하지 못 한다는 것은 아니다.
a = [10, 20, 30]
a.pop(1)
>>>[10, 30]
a = [10, 20, 30]
del a[1]
>>>[10, 30]
이렇게 사용하여도 결과값은 중간이 삭제된 것을 확인 할 수 있다.
그러나 그 전에 배웠던 del() 함수가 있기 때문에 pop만의 장점으로 보기는 어렵다는 것 뿐이다.
리스트에서 특정 값 삭제하기
이제 인덱스로 삭제가 아닌, 값을 검색해서 삭제 하는 방법이 있다.
a = [10, 20, 30]
a.remove(20)
>>>[10, 30]
remove가 20을 나타내므로 값 20을 지우고 10과 30만을 출력 하였다. 그런데 이 removie는 list안의 20의 값을 모두 삭제하는 것은 아니고, 만약 중복이 되어 여러개의 20이 있을 경우, 제일 앞에서 검색 된 20만 삭제된다는 점이다.
a = [10, 20, 30, 20]
a.remove(20)
>>>[10, 30, 20]
제일 앞에 있는 20만 삭제되었으므로 결과값을 출력 할 때 마지막에 20이 남아있음을 알 수가 있다.
특정 값 인덱스 구하기
a = [10, 20, 30, 15, 20, 40]
a.ineex(20)
>>>1
index는 리스트에서 특정 인덱스(위치)를 구할 때 사용하는 함수이다.
만약 예시처럼 값이 여러개 일 경우 제일 처음 검색 된 값만 결과값으로 나타내준다.
특정 값 개수 구하기
a = [10, 20, 30, 15, 20, 40]
a.count(20)
>>>2
count는 리스트 안에 내가 찾고자 하는 결과값이 몇 개 인지를 검색 할 때 매우 유용하다.
remove나 index처럼 한 개밖에 검색하지 못 하는 경우, 더 이상 내가 원하는 결과값이 있는지 없는지 유, 무의 판단에 중요한 함수가 될 수도 있다.
리스트 순서 뒤집기
a = [10, 20, 30, 15, 20, 40]
a.reverse()
>>>[40, 20, 15, 30, 20, 10]
리스트의 결과값을 반대로 뒤집는 경우이다.
리스트의 요소를 순서대로 정렬하기
a = [10, 20, 30, 15, 20, 40]
a.sort()
>>>[10, 15, 20, 20, 30, 40]
리스트의 요소들을 순서대로 정렬한다. 활용 방법에 따라 매우 유용한 방법이 될 수도 있다.
리스트의 모든 요소를 삭제하기
a = [10, 20, 30]
a.clear()
>>>[]
clear는 리스트는 그대로 놔두고 안에 있는 값만 삭제시킨다. del[:] 과 효과는 동일하다.
리스트 슬라이스로 조작하기
a = [10, 20, 30]
a[len(a):] = 500
>>>[10, 20, 30, 500]
a[len(a):은 시작 인덱스를 a 리스트의 마지막으로 지정해서 리스트의 마지막 인덱스보다 1이 더 큰 상태이다.
그래서 500은 인덱스의 마지막으로 이동되어 값을 저장한다.
여기서, 리스트를 추가할 때, 이는 extend일까...append일까.
a = [10, 20, 30]
a[len(a):] = [500, 600]
>>>[10, 20, 30, 500, 600]
정답은 extend 방식으로 들어가므로 참고하고 사용해야 한다.
리스트 할당과 복사 알아보기
a = [0, 0, 0, 0, 0]
b = a
일단 위의 방식은 할당의 방식이다.
두 개의 리스트가 만들어졌으나, 두 개는 서로 똑같은 리스트를 두고 서로 다른 변수만 사용 할 뿐이다.
a[1]의 값을 50으로 변경 할 경우 b[1]의 값도 50으로 변경한다.
a = [0, 0, 0, 0]
b = a.copy()
서로 다른 리스트처럼 b는 a와 같은 값을 가졌으나 다른 리스트를 표현하려면 copy() 함수를 사용해야 한다.
이제 할당과 복사에서
a is b를 사용 할 경우 True와 False가 나타남을 확인해보자.
반복문으로 리스트 요소를 모두 출력하기
a = 38, 21, 53, 62, 19]
for i in a:
print(i)
이 방식은 a의 배열을 for의 i에 담아 반복문이 돌 때 해당 인덱스 위치값을 표현하는 식이다.
약깐 설명이 어렵지만 한 번 결과를 돌려보면 알 수가 있다.
a = [38, 21, 53, 62, 19]
i = 0
while i < len(a):
print(a)
i+=1
for와 다르게 while은 초기문은 반복문 밖에, 증감문은 while문 안에 들어 있다.
리스트의 가장 큰 수와 가장 작은 수 구하기
a = [38, 21, 53, 72, 19]
min(a)
max(a)
>>> 72
>>> 19
리스트의 가장 큰 수와 작은 수를 구 할 때 굳이 정렬 할 필요 없이 함수를 제공하므로 나열 할 필요는 없다.
리스트 합계 구하기
a = [ 10, 10, 10, 20]
sum(a)
>>> 50
리스트가 갖고 있는 모든 값의 합계도 구할 수가 있다.
리스트 표현식 사용하기
파이썬의 리스트가 특이한 점은 리스트 안에 for 반복문과 if 조건문을 사용할 수 있다는 점이다.
리스트 안에 for 반복문, if 조건문 등을 지정하여 리스트를 생성하는 것을 리스트 컴프리헨션 이라고 부른다.
리스트에서 for문 사용하기
a = [i for i in range(10)]
b = list(i for in range(10))
>>> [0, 1, 2, 3, 4, 5, 6, 7, 8, 9]
리스트에서 if문 사용하기
a = [ i for in range(10) if i % 2 ==0]
>>>[0, 2, 4, 6, 8]
for문을 반복하지만 2의 나머지값이 0인 짝수만을 출력하라는 조건식이다.
순서는 for문부터이며 for문안의 if문이 동작하고 그에 대한 결과값을 리스트 a가 담는다.
응용을 한다면 한 번이 아닌 여러번 도 사용이 가능하다.
a = [i * j for j in range(2, 10) for i in range(1, 10)]
for문은 하나만 사용 할 수 있는 것은 아니다. 개수에는 제한이 없으므로 메모리가 허용하는 한 계속해서 사용 할 수가 있다.
'Language > Python' 카테고리의 다른 글
[Python] 문자열 응용하기 (0) | 2020.10.14 |
---|---|
[Python] 2차원 리스트 사용하기 (0) | 2020.10.14 |
[Python] if 사용하기 (0) | 2020.10.13 |
[Python] 딕셔너리 사용하기 (0) | 2020.10.13 |
[Python] 시퀀스 자료 활용하기 (0) | 2020.10.13 |