python - list

slocat·2023년 11월 7일
0

start-data

목록 보기
6/75

리스트 길이

numbers = [10, 20, 30, 40, 50]

print(len(numbers))

>>>
5

내부 리스트

studentCnts = [[1, 19], [2, 20], [3, 17], [4, 21]]

for classNo, cnt in studentCnts:
    print(f'{classNo}반 학생 수: {cnt}명')

>>>
1반 학생 수: 19명
2반 학생 수: 20명
(...)

enumerate() : 인덱스와 아이템을 동시에 열거

numbers = [10, 20, 30, 40, 50]

for idx, value in enumerate(numbers):
    print(f'{idx}번: {value}')

>>>
0번: 10
1번: 20
(...)

문자열에도 적용할 수 있다.

str = 'HELLO'

for idx, value in enumerate(str):
    print(f'{idx}번: {value}')

>>>
0번: H
1번: E
(...)

아이템 추가, 삭제

list.append(item) : 리스트 끝에 아이템 추가

numbers = [10, 20, 30, 40, 50]

numbers.append(60)
print(numbers)

>>>
[10, 20, 30, 40, 50, 60]

list.insert(idx, item) : 특정 위치에 아이템 추가

numbers = [10, 20, 30, 40, 50]

numbers.insert(2, 'insert')
print(numbers)

>>>
[10, 20, 'insert', 30, 40, 50]

list.pop([idx]) : 인덱스로 아이템 삭제 및 반환

아이템을 삭제하면서 해당 아이템을 반환한다.

numbers = [10, 20, 30, 40, 50, 60, 70]

# pop() - 맨 마지막 아이템 삭제
popNum = numbers.pop()
print(popNum)	# 70
print(numbers)	# [10, 20, 30, 40, 50, 60]

# pop(n) - n 인덱스의 아이템 삭제
popNum2 = numbers.pop(2)
print(popNum2)	# 30
print(numbers)	# [10, 20, 40, 50, 60]

del list[idx] : 인덱스로 아이템 삭제

numbers = [10, 20, 30, 40, 50, 60, 70]

del numbers[2]  
print(numbers)    # [10, 20, 40, 50, 60, 70]

del numbers[1:3]
print(numbers)    # [10, 50, 60, 70]

list.remove(item) : 특정 아이템 삭제

remove()는 최초로 발견한 하나의 아이템만 삭제한다.

numbers = [10, 777❌, 20, 777⭕, 30, 777⭕, 40]

numbers.remove(777)
print(numbers)

>>>
[10, 20, 777, 30, 777, 40]

리스트 내에 특정 아이템이 여러 개 있다면 while문을 이용하면 된다.

# while문
numbers = [10, 777❌, 20, 777❌, 30, 777❌, 40]

removeNum = 777
n = 0
while n < len(numbers):
    if removeNum == numbers[n]:
        numbers.remove(removeNum)
        continue

    n += 1

print(numbers)

>>>
[10, 20, 30, 40]

in 연산자를 사용하면 더 편리하다.

# while + in 연산자
numbers = [10, 777❌, 20, 777❌, 30, 777❌, 40]

removeNum = 777

while removeNum in numbers:
    numbers.remove(removeNum)

print(numbers)

>>>
[10, 20, 30, 40]

리스트 연결(확장) : extend(), +

list.extend(list)

# 1번에 2번이 더해짐
numbers1 = [10, 20, 30, 40]
numbers2 = [50, 60, 70, 80]

numbers1.extend(numbers2)
print(numbers1)
print(numbers2)

>>>
[10, 20, 30, 40, 50, 60, 70, 80]
[50, 60, 70, 80]

+ 연산자

# 1번과 2번이 연결된 새로운 리스트
numbers1 = [10, 20, 30, 40]
numbers2 = [50, 60, 70, 80]

addNumbers = numbers1 + numbers2
print(addNumbers)

>>>
[10, 20, 30, 40, 50, 60, 70, 80]

리스트 정렬 : list.sort()

numbers = [40, 20, 50, 10, 30]

# 오름차순
numbers.sort()  # numbers.sort(reverse=False)
print(numbers)

# 내림차순
numbers.sort(reverse=True)
print(numbers)

>>>
[10, 20, 30, 40, 50]
[50, 40, 30, 20, 10]

아이템 순서 뒤집기 : list.reverse()

numbers = [40, 20, 50, 10, 30]

numbers.reverse()
print(numbers)

>>>
[30, 10, 50, 20, 40]

리스트 슬라이싱 : 원하는 아이템 뽑기

# list[시작:끝:단계]
# 시작은 포함⭕, 끝은 포함❌

numbers = [0, 1, 2, 3, 4, 5, 6]

print(numbers[2:4])    # [2, 3]
print(numbers[:])      # [0, 1, 2, 3, 4, 5, 6]
print(numbers[1:])     # [1, 2, 3, 4, 5, 6]
print(numbers[:1])     # [0]

print(numbers[2:-2])   # [2, 3, 4]
print(numbers[-5:-2])  # [2, 3, 4]

print(numbers[2:6:2])  # [2, 4]
print(numbers[::2])    # [0, 2, 4, 6]

슬라이싱을 이용한 아이템 변경

numbers = [10, 20, 30, 40, 50]

numbers[2:4] = [777, 777]
print(numbers)

>>>
[10, 20, 777, 777, 50]

문자열 슬라이싱

str = '012345678'

print(str[:])        # [012345678]
print(str[2:4])      # [23]
print(str[2:-2])     # [23456]
print(type(str[:]))  # <class 'str'>

리스트 곱셈 연산

numbers = [10, 20, 30]
print(numbers * 3)

>>>
[10, 20, 30, 10, 20, 30, 10, 20, 30]

인덱스 찾기 : list.index(item)

index()는 가장 앞에 있는 아이템 하나만 찾는다.

numbers = [10, 20, 30, 77⭕, 40, 50, 77❌]
print(numbers.index(77))

>>>
3

인덱스 범위를 지정해서 찾을 수도 있다.

# index(item, 시작idx, 끝idx)
numbers = [10, 20, 30, 77❌, 40, 50, 77⭕]
print(numbers.index(77, 4, len(numbers)))

>>>
7

특정 아이템의 개수 구하기 : list.count(item)

numbers = [10, 77, 20, 77, 30, 77, 40]
print(numbers.count(77))

>>>
3

0개의 댓글