수달이네 기술 블로그

7. 리스트(list 자료형의 기능, 함수 등..) 본문

언어/Python

7. 리스트(list 자료형의 기능, 함수 등..)

슬픈 수달이 2025. 8. 25. 16:39

🔍시퀀스 자료형

순서를 가진 모든 요소들의 집합 시퀀스 자료형이라 한다. 

  • 문자열
  • 바이트 시퀀스
  • 바이트 배열
  • 리스트
  • 튜플
  • range 객체

위같은 자료형은 인덱스로 접근할 수 있으며 순서를 가지고 있다.

대부분의 시퀀스 자료형은 아래의 기능을 사용가능한데,

함수or 연산자 설명
+ 2개의 시퀀스 연결 [1.2] + [3,4,5] #[1,2,3,4,5]
* 반복 [’Hi’]*3 #[’Hi’,’Hi’,’Hi’]
len() 길이 계산 len([1,2,3]) #3
in 소속 3 in [1,2,3] #True
not in 소속하지 않음 3 not in [1,2,3] #False
[] 인덱스 mylist[i] #mylist의 i번째 요소
[start:end] 슬라이싱 mylist[1:3] #2번째~4번째요소
min() 시퀀스에서 가장 작은 요소 min([1,2,3]) #1
max() 시퀀스에서 가장 큰 요소 max([1,2,3]) #3
for 반복 리스트 반복

🔍리스트

파이썬에서의 리스트는 타 언어의 배열에 비하여 사용하기 편리한 특징들이 있다.

#리스트 생성 방법
list1 = list()   #공백 리스트 생성
list2 = list("Hello") #문자 H,e,l,l,o를 요소로 가지는 리스트 생성
list3 = list(range(0,5)) #0,1,2,3,4를 요소로 가지는 리스트 생성

#위의 생성방식은 아래와 같음
list1 = [] #공백 리스트 생성, 하나하나 요소를 넣어주는것은 2,3으로 할 수 있음.

위는 파이썬 리스트 선언 방법이다.

🔍파이썬 리스트의 특징

여러 타입을 가변적으로 넣을 수 있다.

list1 = [12, "dog", 198.3]#혼합 자료형

파이썬은 이전에 말했듯 하나하나를 그냥 객체로서 보기 때문에 리스트를 생성할때도 자료형에 구애받지 않고 넣을 수 있다.

정적으로 크기를 설정하지 않고 가변적으로 추가가능하다.

score = []
score.append(int(input("Enter score: "))) #append() 메서드
int score[100];
int *score = (int*)malloc(sizeof(int)*n);

위와 같은 식으로 c언어의 경우 정적배열 선언과 동적배열 선언 모두 선언시 크기가 정해지지만,

파이썬의 경우 선언할때 크기를 정하지 않고, 내용을 하나하나 추가해가는 식이다.

🔍인덱싱(indexing), 슬라이싱(slicing)

인덱싱: 시퀀스에서 하나의 요소인덱스 연산자를 통해 접근하는 것을 의미한다.([대괄호])

슬라이싱: 리스트 내에서 범위를 지정해서 원하는 요소들을 선택하는 연산이다.([:(콜론)])

list = [1,2,3,4,5,6,7,8,9,10,11,12,13,14,15]

print("0번째 요소 index: ",list[0])
print("3~6번째 요소 slicing: ", list[3:6])
# 0번째 요소 index:  1
# 3~6번째 요소 slicing:  [4, 5, 6]

🔍 리스트의 다양한 기능

in: 내용 탐색

message = input("input message: ")
if 'z' in message:
    print("z in!")

리스트 내의 요소를 간단하게 찾을 수 있다.

리스트.insert(인덱스, 내용): 원하는 위치에 인덱스 삽입

list = [1,2,3,4,5,6,7,8,9,10,11,12,13,14,15]

list.insert(2,'hello')
print(list)
#[1, 2, 'hello', 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15]

인덱스의 자리에 내용을 삽입하고 원래 그 인덱스는 뒤로 밀려난다.

리스트.index(찾는내용): 원하는 내용을 탐색 후 인덱스 반환

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

print(list.index("c"))
#2

원하는 내용을 찾고 찾은 내용이 있던 인덱스를 반환해준다.

리스트.pop(인덱스): 인덱스의 내용을 제거, 반환

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

print(list.pop(2))
print(list)

# c
# ['a', 'b', 'd', 'e']

인덱스 내용을 반환하고 해당 리스트에서 내용을 삭제한다.

리스트.remove(찾는내용):내용 탐색 후 제거

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

list.remove("a")
print(list)

# ['b', 'c', 'd', 'e']

내용을 탐색 후 해당 내용에 해당하는 내용을 제거한다.

리스트 비교 연산자: 리스트 2개를 비교

list1 = list("abc")
list2 = list("ab")

if list1 > list2:
    print(list1)
else:
    print(list2)
    
#['a', 'b', 'c']

리스트 2개를 비교하고 True, False를 반환한다.

==: 2개의 리스트 값들이 모두 일치해야한다.

>: 앞의 리스트 부터 하나하나 검사해서 더 큰 값가진 것을 반환
만약 같은 값일 경우 같은 더 긴 리스트가 큰것임. 왼쪽이 크다면 True아니면 False를 반환
나머지 비교연산자도 동일

리스트.sort([reverse = True,False]):리스트를 정렬(reverse 값은 역순인지 설정)

list = [4,1,2,3,5,7,1,2]

list.sort()
print(list)

#[1, 1, 2, 2, 3, 4, 5, 7]

sorted(리스트, [reverse = True,False]): 원래 리스트는 그대로 두고 정렬한 리스트를 반환

li = [3,1,2,4,5]
li2 = sorted(li,reverse=True)
print(li)
print(li2)

# [3, 1, 2, 4, 5]
# [5, 4, 3, 2, 1]
li = sorted("A picture is worth a thousand words.".split(),key=str.lower)
print(li)

#['A', 'a', 'is', 'picture', 'thousand', 'words.', 'worth']

위의 내용은 split()을 이용해 공백으로 분리한 후 문자열에 따라 정렬함.

'언어 > Python' 카테고리의 다른 글

9. 자료구조  (9) 2025.08.27
8. 리스트2(리스트 관련 함수들, 리스트 함축...)  (6) 2025.08.26
6. 함수2(Call-by-value,reference, 람다식, 튜플, 모듈 등...)  (6) 2025.08.25
5. 함수  (0) 2025.08.23
4. 자주 쓰이던 함수  (0) 2025.08.22