상세 컨텐츠

본문 제목

파이썬 - 리스트(list) 자료형

프로그래밍 언어/파이썬

by 별을 보는 사람 2021. 2. 8. 15:29

본문

반응형

정의

리스트는 파이썬에서 제공하는 컬렉션 데이터 타입 입니다. 

  • 순서가 있으며 수정이 가능합니다.
  • 수정, 삭제, 추가가 가능합니다.
  • 대괄호([ ])를 이용하여 선언되며, 내부 원소는 ','로 구분됩니다.
# 리스트는 대괄호를 이용하여 선언하거나 
list_1 = ["banana", "cherry", "apple"]
print(list_1)

['banana', 'cherry', 'apple']


# 리스트 함수를 이용해 선언 합니다.
list_2 = list()
print(list_2)

[]


# 리스트는 서로 다른 데이터 타입을 
# 요소로 가질 수 있습니다.
list_3 = [5, True, "apple"]
print(list_3)

[5, True, 'apple']


# 리스트는 중복 요소를 허용합니다.
list_4 = [0, 0, 1, 1]
print(list_4)

[0, 0, 1, 1]

 

요소에 접근

리스트의 요소에는 인덱스 넘버를 이용해 접근합니다.

주의할 점은 파이썬에서 인덱스 넘버는 '0'부터 시작합니다.

list_1 = ["banana", "cherry", "apple"]
item = list_1[0]
print(item)

banana


# 음수 인덱스 넘버를 이용하여 접근도 가능합니다. 
# 인덱스 넘버가 '-1'일 경우 마지막 요소를 가리킵니다. 
item = list_1[-1]
print(item)

apple

 

요소 변경

인덱스 넘버를 이용하여 새로운 값을 입력할 수 있습니다.

# 리스트는 생성된 뒤에 인덱스 번호를 이용해 변경할 수 있습니다.
list_1 = ["banana", "cherry", "apple"]
list_1[2] = "lemon"
print(list_1)

['banana', 'cherry', 'lemon']

 

리스트에서 제공하는 함수들

my_list = ["banana", "cherry", "apple"]

# len() : 리스트 요소의 갯수를 리턴한다.
print("Length:", len(my_list))

Length: 3


# append() : 리스트의 끝에 새로운 요소를 삽입한다.
my_list.append("orange")
print(my_list)
['banana', 'cherry', 'apple', 'orange']


# insert() : 지정한 위치에 새로운 요소를 삽입한다.
my_list.insert(1, "blueberry")
print(my_list)

['banana', 'blueberry', 'cherry', 'apple', 'orange']


# pop() : 지정된 위치의 요소를 리턴하고 삭제한다.
# 위치를 지정하지 않으면 맨 뒤의 요소가 지정된다.
item = my_list.pop()
print("Popped item: ", item)
print(my_list)

Popped item:  orange
['banana', 'blueberry', 'cherry', 'apple']


# remove() : 리스트의 요소를 삭제한다.
# 지정된 요소가 리스트에 존재하지 않으면 에러 발생!
my_list.remove("cherry") 
print(my_list)
['banana', 'blueberry', 'apple']


# clear() : 리스트에서 모든 요소를 제거한다.
my_list.clear()
print(my_list)

[]


# reverse() : 모든 항목을 뒤집는다.
my_list = ["banana", "cherry", "apple"]
my_list.reverse()
print('Reversed: ', my_list)

Reversed:  ['apple', 'cherry', 'banana']



# sort() : 오름차 순으로 항목 정렬
my_list.sort()
print('Sorted: ', my_list)

Sorted:  ['apple', 'banana', 'cherry']


# sorted() 함수를 사용해 기존 함수를 변경시키지 않고 
새로운 함수를 생성할 수 있다.
my_list = ["banana", "cherry", "apple"]
new_list = sorted(my_list)


# 동일한 요소를 이용해서 리스트 생성
list_with_zeros = [0] * 5
print(list_with_zeros)

[0, 0, 0, 0, 0]


# 리스트 병합
list_concat = list_with_zeros + my_list
print(list_concat)

[0, 0, 0, 0, 0, 'banana', 'cherry', 'apple']



# 문자열을 리스트로 변경
string_to_list = list('Hello')
print(string_to_list)

['H', 'e', 'l', 'l', 'o']

 

리스트 복사

리스트를 복사할 때 주의해야 할 것들

list_org = ["banana", "cherry", "apple"]

# 다음 구문은 단지 List에 대한 참조만을 복사 하는 것임.
# 둘 다 같은 값을 가리키는 주소기 때문에 복사본을 수정하면 원본도 바뀜.
list_copy = list_org


# append(True) 구문 실행 후 사본 리스트가 변경되면 원본 리스트도 변경됨.
list_copy.append(True)
print(list_copy)
print(list_org)

['banana', 'cherry', 'apple', True]
['banana', 'cherry', 'apple', True]


# 목록을 실제로 복사하려면 copy() 또는 list(x) 사용합니다.
# 목록을 복사하여 새로운 배열 생김.(참조가 아니라 또 다른 리스트 생성)
# 슬리이싱 기능을 사용한 리스트 복사 가능: list_copy = list_org[:]
list_org = ["banana", "cherry", "apple"]

list_copy = list_org.copy()
# list_copy = list(list_org)
# list_copy = list_org[:]

# 이제 사본을 수정해도 원본에 영향을주지 않습니다.
# (새로 생긴 배열이기 때문에...)
list_copy.append(True)
print(list_copy)
print(list_org)

['banana', 'cherry', 'apple', True]
['banana', 'cherry', 'apple']

 

반복문

# for 반복문을 사용하여 목록 반복

list_org = ["banana", "cherry", "apple"]

for i in list_1:
    print(i)
    
banana
cherry
lemon

 

요소 확인

list_1 = ["banana", "cherry", "apple"]

if "banana" in list_1:
    print("yes")
else:
    print("no")
    
yes

 

Slicing

# a[시작:끝:스텝], 기본 스텝은 1

a = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]
b = a[1:3] 
print(b)

[2, 3]


b = a[2:] # 인덱스값의 시작은 0->1, 1->2, 2->3.
print(b)

[3, 4, 5, 6, 7, 8, 9, 10]



b = a[:3] # 인덱스값의 시작 0->1, 1->2, 2->3.
print(b)

[1, 2, 3]


a[0:3] = [0] # 인덱스 0~3까지 0으로 변경.
print(a)

[0, 4, 5, 6, 7, 8, 9, 10]


b = a[::2] # 두 번째 항목마다 시작
print(b)

[0, 5, 7, 9]


a = a[::-1] # 음수 스탭로 목록을 반전:
print(a)

[10, 9, 8, 7, 6, 5, 4, 0]


b = a[:] # 슬라이싱을 이용해 List 복사
print(b)

[10, 9, 8, 7, 6, 5, 4, 0]

 

List 생성에 for 문 사용

a = [1, 2, 3, 4, 5, 6, 7, 8]
b = [i * i for i in a] # 각 요소를 제곱해서 생성
print(b)

[1, 4, 9, 16, 25, 36, 49, 64]

 

중첩 리스트

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

[[1, 2], [3, 4]]
[1, 2]
반응형

관련글 더보기

댓글 영역