[파이썬] Python 리스트(list) 사용방법 총정리

파이썬에서 리스트(list) 자료형에 대해 알아봅니다.

리스트형 자료형은 굉장히 많이 사용됨으로 반드시 익혀두세요.

파이썬 리스트 타입의 자료형(List)

파이썬에서 리스트는 배열이라고 생각하면 됩니다.

a = []
b = [1,2,3,4,5]
c = ['Hello','World']
d = [1,2,3, ['Hello', 'World']]

리스트의 값을 변경하는 방법은 인덱스를 지정하여 변경할 수 있습니다.

a = [1,2,3,4,5]
a[0] = 'aa'
print(a)

[실행결과]

['aa', 2, 3, 4, 5]

파이썬 리스트의 값을 여러개 변경하는 방법

a = [1,2,3,4,5]
a[2:3] = ['a','b','c']
print(a)

[실행결과]

[1, 2, 'a', 'b', 'c', 4, 5

파이썬 리스트 함수

함수설명
append(추가할 값)리스트에 값 추가
extend(확장할 리스트)리스트에 리스트를 추가
index(찾을 값)리스트에서 찾을 값의 위치를 반환
insert(추가할 위치, 추가할 값)리스트에 넣을 위치에 넣을 값을 넣어준다.
remove(삭제할 대상 값)리스트에서 삭제할 값을 찾아서 삭제 (가장 먼저 나온 값), 인덱스 번호 아님
count(찾을 값)리스트에 찾을 값이 몇 개있는지 개수를 세서 반환
sort()리스트 정렬 (  가나다 순으로 정렬 )
a = [1,2,3,4,5]
a.append(10)
a.append(6)
a.append(9)
print(a)

[실행결과]

[1, 2, 3, 4, 5, 10, 6, 9]

정렬시 리버스(reverse)로 정렬할 경우 reverse = True를 설정합니다.

반드시 대문자 T로 시작하는 True로 설정합니다.

#정렬하기
a.sort()
print (a)

#리버스 정렬
a.sort(reverse = True)
print (a)

[실행결과]

[1, 2, 3, 4, 5, 6, 9, 10]

[10, 9, 6, 5, 4, 3, 2, 1]

여러개의 리스트를 하나로 합치는 방법 : + 기호를 사용하여 간단하게 해결됩니다.

b = [1, 2, 3, 4, 5]
c = ['Hello', 'World']

a = b + c

print(a)

[실행결과]

[1, 2, 3, 4, 5, 'Hello', 'World']

파이썬 리스트 값 중복 제거 하는 방법

set()함수를 사용하면 중복된 값이 제거 됩니다. 그러나 자료형이 set 자료형으로 변경됩니다. 그럼으로 중복 제거 후 리스트 자료형으로 형변환이 필요합니다. 

b = [1, 2, 3, 4, 5, 1, 2, 3]
c = ['Hello', 'World', 1, 2, 3]

a = b + c
print(a)

#중복제거
d = set(a)  #set 자료형
print(type(d))
print(d)

#다시 리스트 자료형으로 형변환
e = list(d)
print(type(e))
print(e)

[실행결과]

[1, 2, 3, 4, 5, 1, 2, 3, 'Hello', 'World', 1, 2, 3]
<class 'set'>
{1, 2, 3, 4, 5, 'Hello', 'World'}
<class 'list'>
[1, 2, 3, 4, 5, 'Hello', 'World']

파이썬 리스트를 문자열로 변환하는 방법 (list to string)

리스트를 문자열로 변경하는 방법은 join()함수를 사용하여 처리할 수 있다. 주의해야할 점은 하나 있습니다. 리스트의 요소가 가 문자열이 아닌 정수일경우 join문에 바로 적용하면 TypeError: sequence item 0: expected str instance, int foud 오류가 발생됩니다.  join문 안에 for문을 사용하여 str()함수를 사용하여 형변환 처리를 해야합니다.  문자열로 변환시 구분자를 추가할 수도 있습니다.

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

str1 = ''.join(a)

#실행결과
TypeError: sequence item 0: expected str instance, int found


str2 = ''.join(str(e) for e in a)
print(str2)

#실행결과
12345


b = ['Hello', 'World', 'Python']
str3 = ''.join(a)
print(str3)

#실행결과
HelloWorldPython



b = ['Hello', 'World', 'Python']

#문자열 구분자로 공백을 준 경우
str3 = ' '.join(b)
print(str3)

#실행결과
Hello World Python

#문자열 구분자로 콤마를 준 경우
str3 = ','.join(a)
print(str3)

#실행결과
Hello,World,Python

파이썬 리스트를 JSON으로 객체로 변환하는 방법(List to JSON)

JSON타입의 문자열이 필요할 경우가 아주 많아요. json모듈을 사용하면 쉽게 변환할 수 있어요. json.dumps()함수를 사용 예제를 살펴봅니니다. 딕셔너리 자료형 역시 JSON으로 동일하게 변환하시면 됩니다.

import json

alist = [{'a': 1, 'b': 2}, {'c': 3, 'd': 4}]
print(type(alist))

jsonstr = json.dumps(alist)
print(jsonstr)


#실행결과
<class 'list'>
[{"a": 1, "b": 2}, {"c": 3, "d": 4}]

이렇게 쉽게 JSON문자열로 변경이 가능해요. 그러나 한글을 사용할때는 한글깨짐 현상이 발생합니다. 한글 깨짐 현상을 해결하기 위해서는 dumps()함수를 사용시 인자값으로 ensure_ascii=False를 처리해주어야 한글이 깨짐을 방지할 수 있습니다.

import json

alist = [{'a': 1, 'b': 2}, {'c': '홍길동', 'd': 'Hello Python'}]

jsonstr = json.dumps(alist)
print(jsonstr)

# 실행결과 한글깨짐현상 발생
[{"a": 1, "b": 2}, {"c": "\ud64d\uae38\ub3d9", "d": "Hello Python"}]



jsonstr = json.dumps(alist, ensure_ascii=False)
print(jsonstr)

#실행결과
[{"a": 1, "b": 2}, {"c": "홍길동", "d": "Hello Python"}]

JSON 문자열을 리스트로 변환하는 방법(JSON to List)

json.loads()함수를 사용하여 변환 가능합니다.

import json

jsonstr = '[{"a": 1, "b": "Go outside"}, {"c": "홍길동", "d": "Hello Python"}]'

alist = json.loads(jsonstr)
print(type(alist))
print(alist)

print(alist[0])
print(alist[0]['b'])



#실행결과
<class 'list'>
[{'a': 1, 'b': 'Go outside'}, {'c': '홍길동', 'd': 'Hello Python'}]
{'a': 1, 'b': 'Go outside'}
Go outside

JSON배열을 파이썬 리스트로 변환하는 방법(JSON Arrays to List)

json.loads()함수를 사용하여 변환가능합니다.

리스트 배열의 값을 출력하는 방법에 대해서 예제코드에 포함하였습니다.

import json

jsonstr = '[[{"a": 1, "b": "Go outside"}], [{"c": "홍길동", "d": "Hello Python"}]]'

alist = json.loads(jsonstr)
print(type(alist))
print(alist)

print(alist[0])
print(alist[0][0])
print(alist[0][0]['b'])



#실행결과
<class 'list'>
[[{'a': 1, 'b': 'Go outside'}], [{'c': '홍길동', 'd': 'Hello Python'}]]
[{'a': 1, 'b': 'Go outside'}]
{'a': 1, 'b': 'Go outside'}
Go outside

파이썬 리스트의 일부값을 삭제하는 방법 : [ ]처리

a = [1,2,3,4,5]
a[3:4] =[]
print(a)

[실행결과]

[1, 2, 3, 5]

파이썬 remove() 함수 사용방법

삭제하고자 하는 값 중에 첫번째로 찾은 값 하나만 삭제합니다.

list = ["Hello", "Python", "Nice", "Have", "a", "Hello"]
print(list)

print('-'*30)
list.remove("Hello")
print(list)
print('-'*30)
list.remove("Hello")
print(list)


#실행결과
['Hello', 'Python', 'Nice', 'Have', 'a', 'Hello']
------------------------------
['Python', 'Nice', 'Have', 'a', 'Hello']
------------------------------
['Python', 'Nice', 'Have', 'a']

Process finished with exit code 0

파이썬 del()함수 사용방법

인덱스값을 지정하여 삭제합니다. 인덱스 값은 0부터 시작됩니다. 마지막 값을 삭제하고 싶은 경우 -1값을 설정합니다.

-2값을 설정하면 마지막 값에서 두 번째의 값이 삭제됩니다.

list = ["Hello", "Python", "Nice", "Have", "a", "Hello", "Who are you"]
print(list)

print('-'*30)
del list[0]
print(list)
print('-'*30)
del list[-1]
print(list)
print('-'*30)
del list[2]
print(list)
del list[-2]
print('-'*30)
print(list)


#실행결과
['Hello', 'Python', 'Nice', 'Have', 'a', 'Hello', 'Who are you']
------------------------------
['Python', 'Nice', 'Have', 'a', 'Hello', 'Who are you']
------------------------------
['Python', 'Nice', 'Have', 'a', 'Hello']
------------------------------
['Python', 'Nice', 'a', 'Hello']
------------------------------
['Python', 'Nice', 'Hello']

Process finished with exit code 0

한번에 여러개의 값을 삭제하고 싶은 경우 범위를 지정하여 삭제합니다.

0:2는 index값이 0부터 2까지의 값을 삭제합니다.

:6 은 index값이 0부터 6까지의 값을 삭제합니다.

4: 은 index값이 4부터 마지막 값까지 삭제합니다.

-2: 은 index값이 뒤에서부터 시작됩니다. 뒤에서 두번째부터 시작되는 모든 값을 삭제합니다.

import random
list = ["Hello", "Python", "Nice", "Have", "a", "Hello", "Who are you"]
print(list)

print('-'*30)
del list[0:2]
print(list)
print('-'*30)
list = ["Hello", "Python", "Nice", "Have", "a", "Hello", "Who are you"]
del list[:6]
print(list)
print('-'*30)
list = ["Hello", "Python", "Nice", "Have", "a", "Hello", "Who are you"]
del list[4:]
print(list)
list = ["Hello", "Python", "Nice", "Have", "a", "Hello", "Who are you"]
del list[-2:]
print('-'*30)
print(list)



#실행결과
['Hello', 'Python', 'Nice', 'Have', 'a', 'Hello', 'Who are you']
------------------------------
['Nice', 'Have', 'a', 'Hello', 'Who are you']
------------------------------
['Who are you']
------------------------------
['Hello', 'Python', 'Nice', 'Have']
------------------------------
['Hello', 'Python', 'Nice', 'Have', 'a']

파이썬 pop()함수 사용방법

del()함수와 유사합니다. 인덱스값을 생략하는 경우 마지막 값을 삭제합니다. 인덱스가 존재하지않는 값을 지정하게 되면IndexError pop index out of range오류가 발생합니다.

list = ["Hello", "Python", "Nice", "Have", "a", "Hello", "Who are you"]
print(list)
print('-'*30)
print(f'삭제대상이 되는 값 : ', {list.pop()})
print(f'삭제 후 결과: {list}')
print('-'*30)
print(f'삭제대상이 되는 값 : ', {list.pop(3)})
print(f'삭제 후 결과: {list}')
print('-'*30)
print(f'삭제대상이 되는 값 : {list.pop(-1)}')
print(f'삭제 후 결과: {list}')
list.pop(33)


#실행결과
C:\Users\ilike\AppData\Local\Programs\Python\Python39\python.exe C:/python/Workspace/main.py
Traceback (most recent call last):
  File "C:\python\Workspace\main.py", line 13, in <module>
    list.pop(33)
IndexError: pop index out of range




['Hello', 'Python', 'Nice', 'Have', 'a', 'Hello', 'Who are you']
------------------------------
삭제대상이 되는 값 :  {'Who are you'}
삭제 후 결과: ['Hello', 'Python', 'Nice', 'Have', 'a', 'Hello']
------------------------------
삭제대상이 되는 값 :  {'Have'}
삭제 후 결과: ['Hello', 'Python', 'Nice', 'a', 'Hello']
------------------------------
삭제대상이 되는 값 : Hello
삭제 후 결과: ['Hello', 'Python', 'Nice', 'a']

Process finished with exit code 1

파이썬 clear()함수 사용방법

리스트의 모든 값을 삭제합니다.

list = list(range(15))
print(list)

print('-'*30)
list.clear()
print(list)



#실행결과
[0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14]
------------------------------
[]

Process finished with exit code 0

파이썬 리스트(list) 자료형을 정렬하는 방법에 대해 알아봅니다. sorted()함수를 사용하여 정렬할 수 있습니다.

sorted()함수를 사용하여 정렬시 기본은 오름차순 정렬입니다. 또 다른 방법으로는 튜플 자료형이나 딕셔너리 자료형에서는 사용할 수 없지만 리스트 자료형에서 사용가능한 sort()함수입니다. 내장 함수인 sort()함수를 실행하면 정렬 대상의 리스트는 정렬을 하게 되어 새롭게 저장됩니다. 그리고 리턴 값으로 None를 반환합니다. 다차원 리스트( 2차원 배열, 다중 리스트)에 대한 정렬 방법에 대해서도 알아봅니다. itemgetter모듈을 사용하여 다차원 리스트에 대한 정렬이 가능합니다.

파이썬 sort함수를 사용하여 내림차순으로 정렬

sort함수의 인자값 중 reverse 인자의 값을 True로 설정합니다. reverse는 기본 False값을 갖음으로 별도로 인자를 설정하지 않은경우 자동으로 오름차순으로 정렬되는 것입니다.

list_value = ["파이썬", "코딩", "프로그래밍", "Python", "언어", "자바", "코틀린"]
list_value.sort(reverse=True)
print(list_value)


#실행결과
['프로그래밍', '파이썬', '코틀린', '코딩', '자바', '언어', 'Python']

sort함수는 None를 리턴합니다. 새로운 변수에 정렬 결과를 담을 필요가 없는거죠

list_value = ["파이썬", "코딩", "프로그래밍", "Python", "언어", "자바", "코틀린"]
sort_list = list_value.sort()
print(sort_list)

#실행결과
None

파이썬 리스트 오름차순 정렬 : sorted()

list_value = ["파이썬", "코딩", "프로그래밍", "Python", "언어", "자바", "코틀린"]
sort_list = sorted(list_value)
print(sort_list)


#실행결과
['Python', '언어', '자바', '코딩', '코틀린', '파이썬', '프로그래밍']

파이썬 리스트 내림차순 정렬 : sorted()

sorted()함수의 인자값 중 reverse 인자의 값을 True로 적용하면 내림차순이 됩니다. 기본값은 False입니다.

list_value = ["파이썬", "코딩", "프로그래밍", "Python", "언어", "자바", "코틀린"]
sort_list = sorted(list_value, reverse=True)
print(sort_list)



#실행결과
['프로그래밍', '파이썬', '코틀린', '코딩', '자바', '언어', 'Python']
list_value = ["파이썬", "코딩", "프로그래밍", "Python", "언어", "자바", "코틀린"]
sort_list = sorted(list_value, reverse=True)

for value in sort_list:
    print(value)
    
    
    
#실행결과
프로그래밍
파이썬
코틀린
코딩
자바
언어
Python


파이썬 sort함수를 사용하여 오름차순으로 정렬

list_value = ["파이썬", "코딩", "프로그래밍", "Python", "언어", "자바", "코틀린"]
list_value.sort()
print(list_value)


#실행결과
['Python', '언어', '자바', '코딩', '코틀린', '파이썬', '프로그래밍']

파이썬 다중 리스트 (2차원 배열)에 대한 정렬방법

from operator import itemgetter
list_value = [["파이썬", "Swift", "프로그래밍", 3, 30.22]
    , ["코틀린", "Python", "언어", 29, 5.32]
    , ["GW-Basic", "GO", "안드로이드", 5.33, 100]]

print("----정렬전----")
for item in list_value:
    print(item)

list_value.sort(key=itemgetter(2))
# 리턴값으로 None를 반환합니다.

print("\n----2번째 인덱스를 기준으로 정렬 후---")
for item in list_value:
    print(item)


list_value.sort(key=itemgetter(2), reverse=True)
print("\n----2번째 인덱스를 기준으로 내림차순(reverse) 정렬 후 ---")
for item in list_value:
    print(item)

list_value.sort(key=itemgetter(2, 3))
print("\n----2번째와 3번째 인덱스를 기준으로 정렬 후 ---")
for item in list_value:
    print(item)

[실행결과]

C:\Users\ilike\AppData\Local\Programs\Python\Python39\python.exe C:/python/Workspace/main.py
----정렬전----
['파이썬', 'Swift', '프로그래밍', 3, 30.22]
['코틀린', 'Python', '언어', 29, 5.32]
['GW-Basic', 'GO', '안드로이드', 5.33, 100]

----2번째 인덱스를 기준으로 정렬 후---
['GW-Basic', 'GO', '안드로이드', 5.33, 100]
['코틀린', 'Python', '언어', 29, 5.32]
['파이썬', 'Swift', '프로그래밍', 3, 30.22]

----2번째 인덱스를 기준으로 내림차순(reverse) 정렬 후 ---
['파이썬', 'Swift', '프로그래밍', 3, 30.22]
['코틀린', 'Python', '언어', 29, 5.32]
['GW-Basic', 'GO', '안드로이드', 5.33, 100]

----2번째와 3번째 인덱스를 기준으로 정렬 후 ---
['GW-Basic', 'GO', '안드로이드', 5.33, 100]
['코틀린', 'Python', '언어', 29, 5.32]
['파이썬', 'Swift', '프로그래밍', 3, 30.22]

Process finished with exit code 0

람다식(lamda)을 사용하여 정렬하는 방법(오름차순 ASC) : sorted()

람다식에서 x[0]의 의미는 키(key)값 기준으로 정렬을 의미합니다. x[1]은 값을 기준으로 정렬한다는 것을 의미합니다.

list_value = ["파이썬", "코딩", "프로그래밍", "Python", "언어", "자바", "코틀린"]

sort_desc_list = sorted(list_value, key=lambda x: x[0])
print(sort_desc_list)

#실행결과
['Python', '언어', '자바', '코딩', '코틀린', '파이썬', '프로그래밍']

[REFERENCE]

docs.python.org/ko/3/howto/sorting.html

카테고리 글 더 보기

error: Content is protected !!