List
는 Python에서 제공하는 collection 중 하나입니다.
List
는 순서가 있고, 변경이 가능한 collection입니다.
다양한 타입의 객체들을 갖고 있을 수 있고, 또한 중복된 값도 허용됩니다.
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]]
Indexing
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
Item 추가
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']
Item 변경
C++
의 배열처럼 [index]
로 Item에 접근하고 값을 변경할 수 있습니다.
food = ['pizza', 'hamburger', 'sandwich', 'donuts']
food[0] = 'muffin'
print(food)
# output: ['muffin', 'hamburger', 'sandwich', 'donuts']
Item 삭제
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: []
List의 모든 Item 추가
다음과 같이 두개의 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']
Clear
clear()
는 List의 모든 아이템을 삭제합니다.
food = ['pizza', 'hamburger', 'sandwich', 'donuts']
food.clear()
print(food)
# output: []
Reverse
reverse()
는 배열의 순서를 반대로 변경합니다.
food = ['pizza', 'hamburger', 'sandwich', 'donuts']
print(food)
food.reverse()
print(food)
# output:
# ['pizza', 'hamburger', 'sandwich', 'donuts']
# ['donuts', 'sandwich', 'hamburger', 'pizza']
Slice
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']
Sorting
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]
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]
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']
참고
Recommended Posts:
- Python - dict 정렬 (Key, Value로 sorting)
- Python - String을 bytes로 변경하는 방법
- Python - bytes를 String으로 변환하는 방법
- Python - 리스트에서 첫번째, 마지막 요소 가져오는 방법
- Python - 문자열에서 특정 단어 추출
- Python - float을 int로 변경하는 방법
- Python - 특정 문자열로 시작하는 문자열 찾기
- Python - dictionary의 중복 제거 방법
- Python - 리스트가 비어있는지 확인
- Python - 문자열 뒤집기, 문자열 거꾸로 출력
- Python - 현재 날짜, 시간 가져오는 방법
- Python - 두개의 리스트 하나로 합치기
- Python - 리스트 크기(size) 구하기