List
는 Python에서 제공하는 collection 중 하나입니다.
List
는 순서가 있고, 변경이 가능한 collection입니다.
다양한 타입의 객체들을 갖고 있을 수 있고, 또한 중복된 값도 허용됩니다.
1. List 생성
[ ]
는 Item이 없는, empty List 객체를 생성합니다.
food = []
print(food)
# output: []
다음과 같이 Item을 함께 초기화할 수 있습니다.
food = ['pizza', 'hamburger']
print(food)
# output: ['pizza', 'hamburger']
다양한 타입의 객체를 List에 함께 추가할 수 있습니다.
food = ['pizza', 'hamburger', 1, 2, [4, 5, 6]]
print(food)
# output: ['pizza', 'hamburger', 1, 2, [4, 5, 6]]
2. Index로 리스트 요소 접근
C++
의 배열처럼 [index]
로 List에 접근할 수 있습니다.
음수 Index는 List의 마지막에서 앞의 방향으로 계산하는 Index입니다.
food = ['pizza', 'hamburger', 'sandwich', 'donuts']
print(food[0])
print(food[1])
print(food[-1]) # index -1 => 3
print(food[-2]) # index -2 => 2
결과
pizza
hamburger
donuts
sandwich
3. 리스트 요소 추가 방법 (append, insert)
append()
는 인자로 전달되는 Item을 List 마지막에 추가합니다.
food = ['pizza', 'hamburger']
food.append('sandwich')
food.append('donuts')
print(food)
# output: ['pizza', 'hamburger', 'sandwich', 'donuts']
insert()
는 인자로 전달된 Index에 Item을 추가합니다.
food = ['pizza', 'hamburger']
food.insert(1, 'muffin')
print(food)
# output: ['pizza', 'muffin', 'hamburger']
List
에 Index로 접근하여 Item을 추가할 수 있습니다.
[1:1]
은 Index 1의 위치에 아이템들을 모두 추가한다는 의미입니다.
food = ['pizza', 'hamburger']
food[1:1] = ['sandwich', 'donuts']
print(food)
# output: ['pizza', 'sandwich', 'donuts', 'hamburger']
반면에, [2:4]
는 Index 2를 포함하고 4를 포함하지 않는 범위(2이상 4미만)의 Item들을 대입되는 List로 교체한다는 의미입니다.
결과를 보면, Index 2와 3의 Item이 삭제되었고, 대입으로 전달된 List로 교체되었습니다.
food = ['pizza', 'sandwich', 'donuts', 'muffin', 'hamburger']
food[2:4] = ['apple', 'kiwi']
print(food)
# output: ['pizza', 'sandwich', 'apple', 'kiwi', 'hamburger']
다음 코드처럼 삭제되는 Item보다 추가되는 Item이 더 많을 수도 있습니다.
food = ['pizza', 'sandwich', 'donuts', 'muffin', 'hamburger']
food[2:4] = ['apple', 'kiwi', 'cookie']
print(food)
# output: ['pizza', 'sandwich', 'apple', 'kiwi', 'cookie', 'hamburger']
4. 리스트에 저장된 요소 변경(업데이트)
C++
의 배열처럼 [index]
로 Item에 접근하고 값을 변경할 수 있습니다.
food = ['pizza', 'hamburger', 'sandwich', 'donuts']
food[0] = 'muffin'
print(food)
# output: ['muffin', 'hamburger', 'sandwich', 'donuts']
5. 리스트의 요소 삭제(remove)
remove()
에 인자로 삭제할 Item을 전달하면 List에서 삭제가 됩니다.
food = ['pizza', 'hamburger', 'sandwich', 'donuts']
food.remove('sandwich')
print(food)
# output: ['pizza', 'hamburger', 'donuts']
다음과 같이 Index의 범위를 지정하여 삭제할 수도 있습니다.
[1:3]
은 1을 포함하고 3을 포함하지 않는 Item들을 의미합니다.
그래서 결과를 보면 Index 1과 2의 Item이 삭제됩니다.
food = ['pizza', 'hamburger', 'sandwich', 'donuts']
del food[1:3]
print(food)
# output: ['pizza', 'donuts']
[:]
처럼 숫자를 생략하면 List의 모든 아이템을 삭제합니다.
del food[:]
print(food)
# output: []
6. 리스트의 모든 요소 추가(extend)
다음과 같이 두개의 List를 더하면, 모든 Item이 추가된 List 객체가 리턴됩니다.
food = ['pizza', 'hamburger']
food2 = ['apple', 'banana', 'kiwi']
all_food = food + food2
print(all_food)
# output: ['pizza', 'hamburger', 'apple', 'banana', 'kiwi']
extend()
에 인자로 List를 전달하면 모든 Item이 List에 추가됩니다.
food = ['pizza', 'hamburger']
food2 = ['apple', 'banana', 'kiwi']
food.extend(food2)
print(food)
# output: ['pizza', 'hamburger', 'apple', 'banana', 'kiwi']
7. 리스트의 모든 요소 제거(clear)
clear()는 List의 모든 아이템을 삭제합니다.
food = ['pizza', 'hamburger', 'sandwich', 'donuts']
food.clear()
print(food)
# output: []
8. 리스트 순서 뒤집기(reverse)
reverse()
는 배열의 순서를 반대로 변경합니다.
food = ['pizza', 'hamburger', 'sandwich', 'donuts']
print(food)
food.reverse()
print(food)
# output:
# ['pizza', 'hamburger', 'sandwich', 'donuts']
# ['donuts', 'sandwich', 'hamburger', 'pizza']
9. 리스트 슬라이싱으로 일부 요소들만 추출
List에 [0:2]
처럼 지정한 범위의 아이템들을 가져올 수 있습니다.
[0:2]
는 지금까지 사용했던 것처럼 Index 0을 포함하고 2를 포함하지 않는 구간입니다.
alphabet = ['a', 'b', 'c', 'd', 'e', 'f', 'g', 'h']
print(alphabet[0:2])
print(alphabet[0:-2])
print(alphabet[3:6])
# output:
# ['a', 'b']
# ['a', 'b', 'c', 'd', 'e', 'f']
# ['d', 'e', 'f']
만약 [:6]
또는 [6:]
처럼 특정 위치의 숫자를 생략하면 Index 0 또는 마지막을 의미합니다.
둘다 생략하면 List의 모든 범위를 의미합니다.
alphabet = ['a', 'b', 'c', 'd', 'e', 'f', 'g', 'h']
print(alphabet[:6])
print(alphabet[6:])
print(alphabet[:])
# output:
# ['a', 'b', 'c', 'd', 'e', 'f']
# ['g', 'h']
# ['a', 'b', 'c', 'd', 'e', 'f', 'g', 'h']
10. 리스트 정렬(sort)
sort()
를 사용하면 List를 정렬할 수 있습니다.
인자로 reverse=True
를 전달하면 반대 방향으로 정렬을 할 수 있습니다.
number = [10, 100, 54, 72, 61]
number.sort()
print(number)
# output: [10, 54, 61, 72, 100]
number = [10, 100, 54, 72, 61]
number.sort(reverse=True)
print(number)
# output: [100, 72, 61, 54, 10]
문자열의 길이로 정렬하려면 다음과 같이 할 수 있습니다.
food = ['pizza', 'hamburger', 'sandwich', 'donuts']
food.sort(key=len)
print(food)
# output: ['pizza', 'donuts', 'sandwich', 'hamburger']
자신이 만든 Sort 함수를 이용하고 싶으면 이렇게 하면 됩니다.
def myFunc(e):
return len(e)
food = ['pizza', 'hamburger', 'sandwich', 'donuts']
food.sort(key=myFunc)
print(food)
food.sort(key=myFunc, reverse=True)
print(food)
# output:
# ['pizza', 'donuts', 'sandwich', 'hamburger']
# ['hamburger', 'sandwich', 'donuts', 'pizza']
원본 List를 변경하고 싶지 않으면 sorted()
를 사용하면 됩니다. 정렬된 List를 리턴해 줍니다.
number = [10, 100, 54, 72, 61]
sorted_number = sorted(number, reverse=True)
print(number)
print(sorted_number)
# output:
# [10, 100, 54, 72, 61]
# [100, 72, 61, 54, 10]
11. List comprehension
List comprehension은 List를 간결하게 생성하는 방법을 제공합니다.
다음과 같이 for
를 이용하여 특정 패턴의 Item들을 생성할 수 있습니다.
squares = [i * i for i in range(1, 10)]
print(squares)
# output: [1, 4, 9, 16, 25, 36, 49, 64, 81]
12. 리스트의 깊은 복사(Deep Copy)
food2 = food
처럼 List를 대입하면, List가 깊게 복사(deep copy)된 것은 아닙니다.
food
에 Item을 추가하면 food2
도 동일한 Item을 갖게 됩니다.
food = ['pizza', 'hamburger', 'sandwich', 'donuts']
food2 = food
food.append('spaghetti')
print(food)
print(food2)
# output:
# ['pizza', 'hamburger', 'sandwich', 'donuts', 'spaghetti']
# ['pizza', 'hamburger', 'sandwich', 'donuts', 'spaghetti']
다음과 같이 Slice로 모든 아이템이 포함된 List 객체를 생성할 수 있습니다.
이제는 food
에 Item을 추가해도 food2
의 Item은 변경되지 않습니다.
food = ['pizza', 'hamburger', 'sandwich', 'donuts']
food2 = food[:]
food.append('spaghetti')
print(food)
print(food2)
# output:
# ['pizza', 'hamburger', 'sandwich', 'donuts', 'spaghetti']
# ['pizza', 'hamburger', 'sandwich', 'donuts']
참고
Related Posts
- Python - Yaml 파일 파싱하는 방법
- Python - 파일 내용 삭제
- Python - for문에서 리스트 순회 중 요소 값 제거
- Python - 두 리스트에서 공통 요소 값 찾기
- Python - 문자열 앞(뒤)에 0으로 채우기
- Python - 공백으로 문자열 분리
- Python - 중첩 리스트 평탄화(1차원 리스트 변환)
- Python - 16진수 문자열을 Int로 변환
- Python - 두 날짜, 시간 비교
- Python f-string으로 변수 이름, 값 쉽게 출력 (변수명 = )
- Python - nonlocal과 global 사용 방법
- Python 바다코끼리 연산자 := 알아보기
- Python - pip와 requirements.txt로 패키지 관리
- Python - 딕셔너리 보기 좋게 출력 (pprint)
- Python - Requests 사용 방법 (GET/POST/PUT/PATCH/DELETE)
- Python - 온라인 컴파일러 사이트 추천
- Python - os.walk()를 사용하여 디렉토리, 파일 탐색
- Python - 문자열 비교 방법
- Python - Text 파일 읽고 쓰는 방법 (read, write, append)
- Python - 리스트에서 첫번째, 마지막 요소 가져오는 방법
- Python - 두개의 리스트 하나로 합치기
- Python - 리스트의 마지막 요소 제거
- Python - 리스트의 첫번째 요소 제거
- Python 소수점 버림, 4가지 방법
- Python 코드 안에서 버전 확인 방법
- Python 소수점 반올림, round() 예제
- Python - 리스트 평균 구하기, 3가지 방법
- Python - bytes를 String으로 변환하는 방법
- Python - String을 bytes로 변환하는 방법
- Python 버전 확인 방법 (터미널, cmd 명령어)
- Python - 람다(Lambda) 함수 사용 방법
- Python - dict 정렬 (Key, Value로 sorting)
- Python - range() 사용 방법 및 예제
- Python - 리스트를 문자열로 변환
- Python - 문자를 숫자로 변환 (String to Integer, Float)