Python Basic 5 | 리스트 응용하기

devheyrin·2022년 1월 7일
0

python basic

목록 보기
5/19

리스트에 요소 추가하기 - append, extend

# 요소 하나 추가 > append 사용 
a = [1, 2, 3]
a.append(50)
print(a)  # [1, 2, 3, 50]

b = [1, 2, 3]
b.append([4, 5])  # 원래 리스트에 [4, 5] 리스트가 하나의 요소로 추가된다. 
print(b)  # [1, 2, 3, [4, 5]]

# 요소 여러 개 추가 > extend 사용 
a = [10, 20, 30]
a.extend([40, 50, 60])
print(a)  # [10, 20, 30, 40, 50, 60]

특정 인덱스에 요소 추가하기 - insert

a = [10, 20, 30]
a.insert(2, 500)  # 2번 인덱스에 500이라는 요소를 추가
print(a)  # [10, 20, 500, 30]

a = [10, 20, 30]
a.insert(len(a), 500)  # 리스트 끝에 500이라는 요소를 추가
print(a)  # [10, 20, 500, 30]

a = [10, 20, 30]
a.insert(5, 500)  # 리스트의 마지막 인덱스보다 큰 값을 넣으면 리스트 끝에 요소가 추가된다. 
print(a)  # [10, 20, 500, 30]

a = [10, 20, 30]
a.insert(1, [40, 50])  # 1번 인덱스에 리스트가 하나의 요소로 추가된다.
print(a)  # [10, [40, 50], 20, 30]

리스트 중간에 요소 여러 개 추가하기

a = [10, 20, 30]
a[2:2] = [40, 50, 60]  # 시작 인덱스와 끝 인덱스를 같게 지정한다. 
print(a)  

# a[len(a):] 와 같이 인덱스를 활용해 값을 추가할 때는 리스트 형태만 추가 가능하다. 
# a[len(a):] = 40 이런 식으로는 추가 불가능! 

리스트에서 요소 삭제하기 - pop(), del, remove()

# 인덱스 활용 > pop()

a = [10, 20, 30]
a.pop()  # pop() > 마지막 요소를 삭제
print(a)  # [10, 20] 

a = [10, 20, 30]
a.pop(1)  # 1번 인덱스를 삭제 
print(a)  # [10, 30]

a = [10, 20, 30]
del a[1]  # 1번 인덱스를 삭제 
print(a)  # [10, 30]

# 값 활용 > remove()

a = [10, 20, 30]
a.remove(20)  # 리스트에서 20을 찾아 삭제 
print(a)  # [10, 30]

a = [10, 20, 20, 20, 30]
a.remove(20)  # 동일한 값이 여러 개 있을 경우 처음 찾은 요소만 삭제 
print(a)  # [10, 20, 20, 30]

특정 값의 인덱스 구하기 - index()

a = [10, 20, 30, 40, 50, 60]
print(a.index(20))  # 1 
# 같은 값이 여러 개인 경우 처음 찾은 인덱스를 구한다. 

특정 값의 개수 구하기 - count()

a = [10, 20, 20, 40, 50, 60]
print(a.count(20))  # 2 

리스트의 순서를 뒤집기 - reverse()

a = [10, 20, 20, 40, 50, 60]
a.reverse()
print(a)  # [60, 50, 40, 20, 20, 10]

리스트의 요소를 정렬하기 - sort(), sorted()

a = [10, 40, 20, 30, 70, 60]
a.sort()  # 기존 리스트를 변경 
print(a)  # [10, 20, 30, 40, 60, 70]

a = [10, 40, 20, 30, 70, 60]
a = sorted(a)  # 정렬된 새 리스트 생성 
print(a)  # [10, 20, 30, 40, 60, 70]

리스트의 모든 요소를 삭제하기 - clear(), del

a = [10, 40, 20, 30, 70, 60]
a.clear()
print(a)  # []

a = [10, 40, 20, 30, 70, 60]
del a[:]
print(a)  # []

리스트가 비어 있는지 확인하기

if not seq:
# 리스트가 비어 있으면 True     
if seq: 
# 리스트에 내용이 있으면 True
a = [1, 2, 3]
if a:
    print(a[-1])  # 빈 리스트가 아닐 경우에만 마지막 요소를 출력 
else:
    print('리스트가 비어있습니다.')

# 결과 : 3 

리스트의 할당

리스트를 다른 변수로 할당하면 두 개의 리스트가 생성될 것 같지만, 그렇지 않다. a 와 b는 같은 리스트(객체)를 가리키고 있다. 따라서 둘 중 하나의 리스트를 변경하면 리스트 a와 b에 모두 반영된다.

a = [1, 2, 3]
b = a
print(a is b)  # True
b[1] = 4
print(a)  # [1, 4, 3]
print(b)  # [1, 4, 3]

리스트의 복사

리스트 a와 b를 완전히 두 개로 만들려면 copy메서드를 활용해서 모든 요소를 복사해야 한다. a와 b는 다른 객체가 되어, b를 변경하면 b에만 반영된다.

a = [1, 2, 3]
b = a.copy()
print(a is b)  # False
print(a == b)  # True, 복사된 요소는 모두 같으므로 True이다. 
b[1] = 4
print(a)  # [1, 2, 3]
print(b)  # [1, 4, 3]

while문으로 요소 출력하기

a = [38, 21, 53, 62, 19]
i = 0
while i < len(a):  # 변수 i를 인덱스로 활용한다. 
    print(a[i])
    i += 1

최소, 최대 구하기

for, if 활용하기

a = [38, 21, 53, 62, 19]
smallest = a[0]
largest = a[0]
for i in a:
    if i > largest:
        largest = i
    if i < smallest:
        smallest = i
print(smallest)
print(largest)

sort() 활용하기

a = [38, 21, 53, 62, 19]
a.sort()  # 오름차순 정렬
print(a[0])  # 최소 == 19
a.sort(reverse=True)  # 내림차순 정렬
print(a[0])  # 최대 == 62

min(), max() 활용하기

a = [38, 21, 53, 62, 19]
print(min(a))  # 19
print(max(a))  # 62

요소의 합계 구하기

for문 활용하기

a = [38, 21, 53, 62, 19]
total = 0
for i in a:
    total += i
print(total)  # 193

sum() 활용하기

a = [38, 21, 53, 62, 19]
print(sum(a))  # 193
🌟 min, max, sum에는 모든 반복가능한(iterable)객체를 넣을 수 있다!

리스트 표현식(list comprehension) 사용하기

뒤에서 앞으로 읽으면 쉽다.

a = [i for i in range(10)]  # 0부터 9까지의 숫자를 생성하고, 이 숫자들을 하나씩 꺼내어 리스트로 생성
print(a)  # [0, 1, 2, 3, 4, 5, 6, 7, 8, 9]
b = list(i for i in range(10))
print(b)  # [0, 1, 2, 3, 4, 5, 6, 7, 8, 9]
# 값을 연산해서 리스트를 생성할 때 유용 

a = [i+10 for i in range(10)]
print(a)  # [10, 11, 12, 13, 14, 15, 16, 17, 18, 19]
b = list(i*10 for i in range(10))
print(b)  # [0, 10, 20, 30, 40, 50, 60, 70, 80, 90]
🌟 list() 보다는 [ ] 방식이 더 성능도 좋고, 파이썬다운 코드이다!

if조건문 사용하기

a = [i for i in range(10) if i % 2 == 0]  # 0~9까지의 숫자중 짝수로 리스트 생성 
print(a)  # [0, 2, 4, 6, 8]

반복문과 조건문을 여러 번 사용하기

for문이 여러 개일 때 처리 순서는 뒤에서 앞 순이다.

a = [i*j for i in range(2, 10) for j in range(1, 10)]
print(a)
# [2, 4, 6, 8, 10, 12, 14, 16, 18, 3, 6, 9, 12, 15, 18, 21, 24, 27, 4, 8, 12, 16, 20, 24, 28, 32, 36, 5, 10, 15, 20, 25, 30, 35, 40, 45, 6, 12, 18, 24, 30, 36, 42, 48, 54, 7, 14, 21, 28, 35, 42, 49, 56, 63, 8, 16, 24, 32, 40, 48, 56, 64, 72, 9, 18, 27, 36, 45, 54, 63, 72, 81]

map 활용하기

# 리스트 전체를 실수 > 정수로 변환
a = [1.2, 2.5, 3.7, 4.6]
a = list(map(int, a))
print(a)  # [1, 2, 3, 4]

# 리스트 전체를 실수 > 문자열로 변환 
a = [1.2, 2.5, 3.7, 4.6]
a = list(map(str, a))
print(a)  # ['1.2', '2.5', '3.7', '4.6']
x = input().split()    # input().split()의 결과는 문자열 리스트
print(x)               # ['10', '20']
m = map(int, x)        # 리스트의 요소를 int로 변환, 결과는 맵 객체
print(m)               # <map object at 0x7fc3131b1850>
a, b = m               # 맵 객체는 변수 여러 개에 저장할 수 있음
print(a)               # 10
print(b)               # 20
profile
개발자 헤이린

0개의 댓글