1. indexing
oddnumber = [1, 3, 5, 7, 9]
cafes = ["star", "bene", "yoger", "friends"]
A = [1, 5, "A", "CC", "B"]
listInList = [[1, 3, 5, 6, 7], cafes, oddnumber, 1, 3, "ABC"]
a = oddnumber[3] # 7
b = cafes[1] # bene
c = A[2] # A
d = listInList[0][1] # 리스트 내 리스트 접근, 3
print(a)
print(b)
print(c)
print(d)
print(a + d, oddnumber[4] + listInList[4]) #숫자 + 숫자 연산 가능
print(b + c) #문자열 + 문자열: 문자열 합하기
7
bene
A
3
10 12
beneA
2. slicing
oddnumber = [1, 3, 5, 7, 9]
cafes = ["star", "bene", "yoger", "friends"]
A = [1, 5, "A", "CC", "B"]
listInList = [[1, 3, 5, 6, 7], cafes, oddnumber, 1, 3, "ABC"]
a = oddnumber[1:5]
b = cafes[1:]
c = A[:2]
d = listInList[0][1:4]
print(a)
print(b)
print(c)
print(d)
[3, 5, 7, 9]
['bene', 'yoger', 'friends']
[1, 5]
[3, 5, 6]
3. 리스트 연산
evennumbers = [2, 4, 6, 8, 10]
oddnumbers = [1, 3, 5, 7, 9]
numbers = evennumbers + oddnumbers
print(numbers)
print(numbers * 4)
[2, 4, 6, 8, 10, 1, 3, 5, 7, 9]
[2, 4, 6, 8, 10, 1, 3, 5, 7, 9, 2, 4, 6, 8, 10, 1, 3, 5, 7, 9, 2, 4, 6, 8, 10, 1, 3, 5, 7, 9, 2, 4, 6, 8, 10, 1, 3, 5, 7, 9]
4. 리스트 수정
numbers = [2, 4, 6, 8, 10, 1, 3, 5, 7, 9]
numbers[4] = 100
print(numbers)
numbers[2] = "hello"
print(numbers)
numbers[0] = numbers[9] #인덱스 9를 인덱스 0에 대입
print(numbers)
numbers[8] = ['a', 'b', 'c'] #리스트 전체를 형태 유지하며 대입
print(numbers)
[2, 4, 6, 8, 100, 1, 3, 5, 7, 9]
[2, 4, 'hello', 8, 100, 1, 3, 5, 7, 9]
[9, 4, 'hello', 8, 100, 1, 3, 5, 7, 9]
[9, 4, 'hello', 8, 100, 1, 3, 5, ['a', 'b', 'c'], 9]
numbers = [2, 4, 6, 8, 10, 1, 3, 5, 7, 9]
'''
numbers[4:5] = 80
Traceback (most recent call last):
File "d:\workspace-python\groom\groom.py", line 3, in <module>
numbers[4:5] = 80
TypeError: can only assign an iterable
'''
numbers[4:5] = [80]
print(numbers)
numbers[4:5] 는 인덱스 4만 가져오지만 리스트로 판단되기 때문에, 슬라이싱으로 값을 수정할 때는 단일 값이 아닌 리스트로 대입해야 한다.
numbers = [2, 4, 6, 8, 10, 1, 3, 5, 7, 9]
numbers[2:6] = "hello"
print(numbers)
[2, 4, 'h', 'e', 'l', 'l', 'o', 3, 5, 7, 9]
nubers[2:6] = "hello" 에서 "hello"는 하나의 문자열이자 문자 집합이다. 따라서 슬라이싱으로 값을 대입할 때 슬라이싱한 범위에 문자열의 문자를 순차적으로 하나씩 대입한다.
numbers = [2, 4, 6, 8, 10, 1, 3, 5, 7, 9]
numbers[2:3] = ["a", "b", "c"]
print(numbers)
numbers[8] = ["a", "b", "c"] # 리스트 전체를 형태 유지하며 대입
print(numbers)
[2, 4, 'a', 'b', 'c', 8, 10, 1, 3, 5, 7, 9]
[2, 4, 'a', 'b', 'c', 8, 10, 1, ['a', 'b', 'c'], 5, 7, 9]
- numbers[2:3] = ['a', 'b', 'c'] 와 같이 슬라이싱한 범위에 리스트를 넣으면 대입할 리스트의 구성 요소들이 numbers 에 완전히 포함된다.
- 그러나, numbers[8] = ['a', 'b', 'c'] 는 리스트 내 리스트 형태로 수정된다.
⭐⭐⭐ 인덱싱과 슬라이싱의 차이점을 확실히 하자!!
5. 리스트 삭제
numbers = [2, 4, 6, 8, 10, 1, 3, 5, 7, 9]
# 값만 삭제
numbers[3] = ""
print(numbers)
[2, 4, 6, '', 10, 1, 3, 5, 7, 9]
numbers = [2, 4, 6, 8, 10, 1, 3, 5, 7, 9]
# 요쇼 삭제
numbers[1:3] = []
print(numbers)
[2, 8, 10, 1, 3, 5, 7, 9]
numbers = [2, 4, 6, 8, 10, 1, 3, 5, 7, 9]
a = "goorm"
#공간까지 삭제
del numbers[4]
print(numbers)
del numbers[:5]
print(numbers)
#객체 자체를 삭제
del a
[2, 4, 6, 8, 1, 3, 5, 7, 9]
[3, 5, 7, 9]
del 키워드를 통한 삭제도 가능하지만, del 키워드는 객체 자체를 삭제한다는 차이를 가진다.
5. 리스트 값 할당
리스트를 선언하고 사용하는 방법에는 두 가지가 있다.
- a = [ ] 혹은 a = list( ) 형식으로 빈 리스트 생성
- a = [1, 2, 3, 4, 5] 혹은 a = list([1, 2, 3, 4, 5]) 형식으로 리스트 생성과 동시에 값 할당
# 잘못된 코드
drawer = []
drawer[0] = "양말"
# 올바른 코드
drawer = []
drawer.append("양말")
print(drawer, drawer[0]) # ['양말'] 양말
drawer = [ ]로 빈 리스트를 만들고 나서 drawer[0] = "양말" 이렇게 코드를 실행하면 IndexError: list assignment index out of range가 발생한다.
이유는 파이썬 리스트는 해당 인덱스가 존재해야만 값을 대입할 수 있기 때문이다. 빈 리스트는 아무 요소도 없기 때문에 drawer[0]은 존재하지 않고, 없는 위치에 값을 할당하려고 하면 에러가 난다.
drawer = []
# 요소 1개 추가
drawer.append("양말")
# 여러 요소 추가
drawer.extend(["속옷","모자","반팔","바지"])
print(drawer)
여러 값을 한 번에 추가하기 위해서는 extend( )함수를 사용하면 된다.
drawer = ["양말", "속옷", "모자", "반팔", "바지"]
# del 키워드는 index 자체를 삭제
del drawer[3]
print(drawer)
drawer[3] = ""
print(drawer)
drawer[3] = "점퍼"
print(drawer)
del 키워드는 값을 완전히 삭제한다.
'Python' 카테고리의 다른 글
| [Python] 튜플(Tuple)과 집합(Set) (0) | 2025.07.21 |
|---|---|
| [Python] 딕셔너리(Dictionary) (0) | 2025.07.21 |
| [Tenserflow] TensorFlow 설치 및 실행 방법(윈도우11, 2025/07/21 기준) (0) | 2025.07.21 |
| [Python] Windows에서 python vs python3 명령어 사용 차이(윈도우11에서 명령어 어떤거 사용해야 함? + tensorflow 설치) (0) | 2025.07.21 |
| [Python] 문자열 함수 (0) | 2025.07.21 |