사자자리

06장 리스트와 연산 본문

Python

06장 리스트와 연산

renne 2022. 6. 12. 19:57

목차

6.1 리스트 기초

6.2 리스트 연산

6.3 리스트 활용

6.4 tuple과 집합

6.5 dictionary

 

6.1 리스트 기초

list = [] 리스트 생성
list.append() 리스트에 항목 추가
list.extend() 리스트에 항목 여러 개 추가
list.insert(N, ) 리스트의 N번째 위치에 항목 추가
week = ['sun', 'mon']
week.append('tue')
week.extend(['thu', 'fri', 'sat'])
week.insert(3, 'wed')
print(week)

<실행 결과>
['sun', 'mon', 'tue', 'wed', 'thu', 'fri', 'sat']

 

list.remove() 리스트의 항목 삭제
del list[N] 리스트의 N번째 항목 삭제
list.pop() 리스트의 가장 오른쪽 항목 반환/삭제
list.pop(N) 리스트의 N번째 항목 반환/삭제
week = ['sun', 'mon', 'tue', 'wed', 'thu', 'fri', 'sat']
week.remove('mon')
del week[2]
token = week.pop()
print(week)
print(token)

<실행결과>
['sun', 'tue', 'thu', 'fri']
sat

 

slicing

 - 인덱스를 사용하여 부분 리스트를 추출

list[start : end] start ~ (end - 1)
list[start : ] start ~ 끝
list[ :end] 맨 앞 ~ (end - 1)
list[ : ] 전체
list[start : end : step] start ~ (end - 1)을 step 간격으로 추출 (음수일 경우 오른쪽에서 왼쪽으로)

 

리스트의 인덱스

 - 왼쪽 끝: 0부터 시작, 1씩 증가

 - 오른쪽 끝: -1부터 시작, 1씩 감소

letter = ['A', 'B', 'C', 'D', 'E']
print(letter[-3 : -1])
print(letter[-3 : 0])
print(letter[-3 : ])

<실행 결과>
['C', 'D']
[]
['C', 'D', 'E']

 

소수 찾기 예제

방법1: 1과 본인을 제외한 수로 나누어 떨어지지 않는 수

n = int(input("소수를 찾을 범위를 입력하세요: "))
primes = []

for i in range(2, n+1):
    prime = True
    
    for j in range(2, i):
        if i%j == 0:
            prime = False
            break

    if prime:
        primes.append(i)
        
print(primes)

<실행 결과>
소수를 찾을 범위를 입력하세요: 100
[2, 3, 5, 7, 11, 13, 17, 19, 23, 29, 31, 37, 41, 43, 47, 53, 59, 61, 67, 71, 73, 79, 83, 89, 97]

 

방법2: 리스트에서 소수의 배수를 제거

n = int(input("소수를 찾을 범위를 입력하세요: "))
primes = list(range(2, n+1))

for i in primes:
    for j in range(2, i+1 // n):
        s = i*j
        if s in primes:
            primes.remove(s)

print(primes)

<실행 결과>
소수를 찾을 범위를 입력하세요: 100
[2, 3, 5, 7, 11, 13, 17, 19, 23, 29, 31, 37, 41, 43, 47, 53, 59, 61, 67, 71, 73, 79, 83, 89, 97]

 

6.2 리스트 연산

len() 항목 개수를 반환하는 내장 함수
index() 항목의 인덱스를 반환하는 순서형 자료 메서드
sort() 오름차순 정렬 메서드
sort(reverse = False) 오름차순 정렬 메서드
sort(reverse = True) 내림차순 정렬 메서드
reverse() 리스트 항목의 순서를 반대로 바꾸는 메서드
word = ['b', 'l', 'a', 'c', 'k']
print(len(word))
print(word.index('l'))

<실행 결과>
5
1
word = ['b', 'l', 'a', 'c', 'k']
word.reverse()
print(word)
word.sort()
print(word)
word.sort(reverse = True)
print(word)

<실행 결과>
['k', 'c', 'a', 'l', 'b']
['a', 'b', 'c', 'k', 'l']
['l', 'k', 'c', 'b', 'a']

 

리스트의 항목 섞기

random.choice(list) 리스트에서 임의의 항목을 1개 선택하고 반환
random.shuffle(list) 리스트의 전체 항목을 무작위로 재배열
import random
week = ['sun', 'mon', 'tue', 'wed', 'thu', 'fri', 'sat']

print(random.choice(week))

random.shuffle(week)
print(week)

<실행 결과>
sat
['sun', 'sat', 'mon', 'thu', 'tue', 'fri', 'wed']

 

6.3 리스트 활용

10진수를 2진수로 변환하기

num = int(input("10진수를 입력하세요: "))
print("10진수 {}의 2진수 표현은 ".format(num))

stack = []
while num > 1:
    stack.append(num%2)
    num = num // 2
stack.append(num)


while stack != []:
    print(stack.pop(), end = ' ')

<실행 결과>
10진수를 입력하세요: 123
10진수 123의 2진수 표현은 
1 1 1 1 0 1 1

 

6.4 tuple & set

tuple

 - 초기화된 후, 항목의 추가와 삭제 등 변경이 불가능

 - 항목 변경을 못하게 하고 싶은 리스트가 필요한 경우 사용

 - 소괄호 사용

none = ()
one = (1,)
odds = (1, 3, 5, 7, 9)

print(one[0])
print(odds)
one.append(3)

<실행 결과>
1
(1, 3, 5, 7, 9)
Traceback (most recent call last): AttributeError: 'tuple' object has no attribute 'append'

 

set

 - 원소의 순서가 없고, 원소의 중복을 허용하지 않는 자료형

 - 중괄호 사용

 - 공집합은 set()

 - {}은 빈 사전을 뜻함

set.add() 원소 추가 메서드
set.remove() 원소 제거 메서드
set.update() 집합에 여러 개의 원소 추가 메서드
num = {1, 2, 3}
num.add(4)
num.remove(1)
num.update({5, 6, 7})
print(num)

<실행 결과>
{2, 3, 4, 5, 6, 7}

 

| 합집합 연산 (shift + \)
& 교집합 연산
- 차집합 연산
set1 = {1, 2, 3}
set2 = {2, 3, 4, 5}

print(set1 | set2)
print(set1 & set2)
print(set1 - set2)

<실행 결과>
{1, 2, 3, 4, 5}
{2, 3}
{1}

 

6.5 dictionary

사전

 - 항목이 key:value 쌍으로 구성된다.

 - 항목의 key를 통해서만 value에 접근한다.

 - 중괄호 사용

dic.items() 사전의 모든 항목을 (key, value) 쌍으로 변환하고 반환
dic.keys() 사전의 모든 항목의 key만 추출하여 반환
dic.values() 사전의 모든 항목의 value만 추출하여 반환
dic = {'Sirius': 100, 'Regulus': 90, 'Bella': 80, 'Narci': 70}
print(dic.items())
print(dic.keys())
print(dic.values())

<실행 결과>
dict_items([('Sirius', 100), ('Regulus', 90), ('Bella', 80), ('Narci', 70)])
dict_keys(['Sirius', 'Regulus', 'Bella', 'Narci'])
dict_values([100, 90, 80, 70])

 

dic['key'] = value 사전의 항목 추가
del dic['key'] 사전의 항목 삭제
dic = {'Sirius': 100, 'Regulus': 90, 'Bella': 80, 'Narci': 70}
dic['Andro'] = 60
del dic['Narci']
print(dic)

<실행 결과>
{'Sirius': 100, 'Regulus': 90, 'Bella': 80, 'Andro': 60}

 

사전의 항목 조회

dic = {'Sirius': 100, 'Regulus': 90, 'Bella': 80, 'Narci': 70}

for person, score in dic.items():
    print(person, "=", score)
    
또는

for person in dic:
    print(person, "=", dic[person])
    
<실행 결과>
Sirius = 100
Regulus = 90
Bella = 80
Narci = 70

 

'Python' 카테고리의 다른 글

11장 그래픽스 응용  (0) 2022.06.13
10장 객체와 클래스  (0) 2022.06.13
08장 GUI와 파일 처리  (0) 2022.06.12
07장 함수  (0) 2022.06.12
Comments