사자자리
06장 리스트와 연산 본문
목차
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