잇뉴얼 (IT_Manual)

[Python] 파이썬 리스트 (List) 본문

Coding/Python

[Python] 파이썬 리스트 (List)

잇뉴얼 2022. 6. 2. 10:46
728x90
반응형

[Python] 파이썬 리스트 (List)


변수는 하나의 데이터를 저장해주는 역할을 합니다. 그러나, 데이터의 양이 많아지면 변수도 많이지게 되어서 코드를 작성하는데 많이 힘들어지게 되는데요. 이러한 불편함을 해결해줄수는것이 바로 리스트(List)와 딕셔너리(Dictionary)입니다. 이번 포스트에서는 리스트(List)에 대해 다뤄보도록 하겠습니다.

▶ 리스트 (List)
_list = [1,2,3,4,5]
_list_str_num = [1,2,'str',3,'python']  # 다양한 자료형을 한번에 넣을수 있다.
_list_2 = [1,2,3,[4,5]]  # 2차원 배열
_list_3 = list()  # _list_3 = [] 와 같은 의미
_list_4 = list(range(0,10))  # 0 ~ 9 사이의 숫자를 순서대로 리스트에 저장
_list_5 = list("python list")

print(_list)
print(_list_str_num)
print(_list_2)
print(_list_3)
print(_list_4)
print(_list_5)

# 결과
# [1, 2, 3, 4, 5]
# [1, 2, 'str', 3, 'python']
# [1, 2, 3, [4, 5]]
# []
# [0, 1, 2, 3, 4, 5, 6, 7, 8, 9]
# ['p', 'y', 't', 'h', 'o', 'n', ' ', 'l', 'i', 's', 't']

다른 언어를 공부해보셨다면, '배열'이라는 단어를 아실껍니다. 코드를 보게 되면, 똑같은데요. 파이썬에서는 '리스트'라는 이름을 사용하고 있습니다. 선언하는 방법은 2가지가 있습니다. 대괄호 '[]'안에 데이터를 넣는 방법과, 'list()'함수를 사용하여서 선언하는 방법이 있습니다. 초기화를 하지 않고 선언을 해도 상관없습니다.

리스트 인덱스
_list = list("python list")

print(_list)
print(_list[0])
print(_list[2:6])
print(_list[:6])
print(_list[6:])
print(_list[:])

# 결과
# ['p', 'y', 't', 'h', 'o', 'n', ' ', 'l', 'i', 's', 't']
# p
# ['t', 'h', 'o', 'n']
# ['p', 'y', 't', 'h', 'o', 'n']
# [' ', 'l', 'i', 's', 't']
# ['p', 'y', 't', 'h', 'o', 'n', ' ', 'l', 'i', 's', 't']

문자열 인덱싱과 슬라이싱과 마찬가지로 리스트에서도 인덱스를 활용하여, 리스트안의 데이터중 일부를 추출하여 사용할 수 있습니다. '리스트명[시작 인덱스:마지막 인덱스]'으로 작성되고, '시작 인덱스 이상, 마지막 인덱스 미만인 데이터들'을 확인할 수 있습니다. 만일 '시작 인덱스' 혹은 '마지막 인덱스'에 값이 없다면, '시작 인덱스 = 0' , '마지막 인덱스 = 리스트의 길이'의 값이 들어간다 생각하시면 되겠습니다.

리스트안 요소 확인하기
find_list = [1,2,3,'a','b']

print(1 in find_list)
print('c' in find_list)

if 3 in find_list:
    print("해당값은 리스트안에 있습니다.")
else:
    print("해당값은 포함되어있지 않습니다.")

# 결과
# True
# False
# 해당값은 리스트안에 있습니다.

리스트안에 요소가 있는지 없는지를 확인할 수 있습니다. '데이터값 in 리스트명'을 입력하면, boolean형으로 요소가 포함되어있다면 True, 요소가 포함되어있지 않다면 False로 결과를 반환해줍니다.

N차원 리스트
_list = [1,2,3,[4,5]]
_list_2 = [1,2,3,[4,5,[6,7]]]

print(_list[3])
print(_list[3][1])
print(_list_2[3])
print(_list_2[3][2])
print(_list_2[3][2][0])

# 결과
# [4, 5]
# 5
# [4, 5, [6, 7]]
# [6, 7]
# 6

리스트안에 또 다른 리스트를 만들수 있습니다. 중첩한다고 하고, N차원 리스트라고 합니다. 위의 코드를 보면 변수'_list'의 경우 2차원 리스트, '_list_2'의 경우 3차원 리스트입니다. 리스트안의 리스트 요소를 조회하고 싶다면, 양파 껍질을 벗기듯이 '리스트명[인덱스][인덱스]...'형식으로 안에 들어가고, 또 안을 들어가는 방식으로 사용하면 됩니다.

리스트 길이 구하기
_list = [1,2,3,4,5]
_list_2 = [1,2,3,[4,5]]
_list_3 = [1,2,3,[4,5,[6,7]]]

print(len(_list))
print(len(_list_2))
print(len(_list_3))
print(len(_list_3[3]))
print(len(_list_3[3][2]))

# 결과
# 5
# 4
# 4
# 3
# 2

코드를 작성하다보면, 리스트의 길이를 확인해야되는 경우가 있습니다. 리스트의 길이를 확인하는 방법은 'len()'이라는 함수를 사용하면 됩니다. 위의 코드처럼 'len(리스트명)'을 작성하게 되면, 해당 리스트의 길이를 확인할 수 있는데요. 그런데, 'list_2','list_3'의 경우, 길이가 '5,6'처럼 보이지만, 결과를 보면, '4,4'로 나옵니다. '_list_2'안에 [4,5]를 하나의 요소로 생각하며, '_list_3'안에 [4,5,[6,7]]를 하나의 요소로 생각하기 때문입니다. N차원 배열은 요소안에 요소의 길이를 따로 구해줘야 합니다.

리스트 추가하기 & 합치기
a = [1,2,3]
b = ['a','b','c']

a.append(4)
b.append('d')
b.append(['e','f'])

a += [5,6]

print(a)
print(b)
print(a+b)

# 결과
# [1, 2, 3, 4, 5, 6]
# ['a', 'b', 'c', 'd', ['e', 'f']]
# [1, 2, 3, 4, 5, 6, 'a', 'b', 'c', 'd', ['e', 'f']]

기존 리스트안에 새로운 데이터를 추가할 수 있습니다. '+'연산자와 'append()'함수인데요. '+'연산자의 경우 '리스트명 = 리스트명 + [데이터]'형식으로 추가가 가능하며, 'append()'함수는 'append(데이터)'형식으로 추가가 가능합니다. 여기서 알아야될 부분은, '+'연산자의 경우 대괄호 '[]' 안의 데이터 따로따로 요소를 추가한다고 하면, 'append()'함수의 경우 소괄호'()'안에 들어가는것을 하나의 요소로 판단하기 때문에, 'append([5,6])'을 작성하면, 2차원 리스트로 되니 참고하세요!

그리고 리스트간에 '+'연산자를 사용하면, 해당 리스트가 합쳐지는 모습을 볼 수있습니다. 

리스트 정렬하기
list = [1,6,5,7,4,9,2]
list_str = ['d','e','g','q','z','a']

list.sort()
list_str.sort()
print(list)
print(list_str)

list.sort(reverse = True)
list_str.sort(reverse = True)
print(list)
print(list_str)

print(list.sort())

# 결과
# [1, 2, 4, 5, 6, 7, 9]
# ['a', 'd', 'e', 'g', 'q', 'z']
# [9, 7, 6, 5, 4, 2, 1]
# ['z', 'q', 'g', 'e', 'd', 'a']
# None

정리가 안되어있는 리스트의 안의 요소들을 정렬할 수 있습니다. 'sort()'함수를 이용하면 되는데요. 코드를 보게되면, 리스트안의 요소들을 작은수부터 차례대로 정리를 해줍니다. 정렬은 숫자형과 문자열 둘다 가능하지만, 리스트안에 다른 자료형이 포함되어있다면, 'sort()'함수를 사용하게 되면, 에러가 발생하게 됩니다.

작은수부터 정렬도 가능하지만, 큰 수부터도 정렬이 가능합니다. '리스트명.sort(reverse = True)'를 하면, 역정렬로 리스트를 만들어줍니다.

반응형
Comments