728x90
반응형
22. 리스트와 튜플 응용하기
22.1 리스트 조작하기
# 리스트에 요소 하나 추가
>>> a = [10, 20, 30]
>>> a.append(100)
>>> print(a)
>>> print(len(a))
[10, 20, 30, 100]
4
# 리스트안에 리스트 추가
>>> a.append([500, 600])
>>> print(a)
>>> print(len(a))
[10, 20, 30, 100, [500, 600]]
5
# 리스트 확장
>>> a.extend([700, 800])
>>> print(a)
>>> print(len(a))
[10, 20, 30, 100, [500, 600], 700, 800]
7
# 리스트의 특정 인덱스에 요소 추가
>>> a.insert(2, 1000)
>>> print(a)
>>> print(len(a))
[10, 20, 1000, 30, 100, [500, 600], 700, 800]
8
# 리스트에서 특정 인덱스의 요소 삭제
>>> print(a.pop())
>>> print(a)
>>> print(a.pop(1)) # del a[1] 과 동일
>>> print(a)
800
[10, 20, 1000, 30, 100, [500, 600], 700]
20
[10, 1000, 30, 100, [500, 600], 700]
# 리스트에서 특정 값 삭제
>>> a.remove(10)
>>> print(a)
[1000, 30, 100, [500, 600], 700]
- 리스트로 스택과 큐 만들기
# 리스트로 스택과 큐 만들기
>>> a = deque([10, 20, 30])
>>> print(a)
deque([10, 20, 30])
>>> a.append(40) # 덱의 오른쪽에 추가
>>> print(a)
deque([10, 20, 30, 40])
>>> a.popleft() # 덱의 왼쪽 요소 하나 삭제
>>> print(a)
deque([20, 30, 40])
# 리스트에서 특정 값의 인덱스 구하기
>>> print(a.index(20))
0
# 특정 값의 개수 구하기
>>> b = [10, 20, 30, 15, 20, 40]
>>> print(b.count(20))
2
# 리스트의 순서를 뒤집기
>>> b.reverse()
>>> print(b)
[40, 20, 15, 30, 20, 10]
# 리스트의 요소 정렬
>>> b.sort()
>>> print(b) # b의 내용을 변경하여 정렬
[10, 15, 20, 20, 30, 40]
>>> c = [10, 20, 30, 15, 20, 40]
>>> print(sorted(c)) # 정렬된 새 리스트를 생성
[10, 15, 20, 20, 30, 40]
# 리스트의 모든 요소를 삭제
>>> a = [10, 20, 30]
>>> a.clear()
>>> print(a)
[]
>>> b = [10, 20, 30]
>>> del b[:]
>>> print(b)
[]
>>> c = [10, 20, 30]
>>> c[len(c):] = [500]
>>> print(c)
[10, 20, 30, 500]
# 리스트가 비어 있는지 확인하기
>>> seq = [10, 20, 30]
>>> if not len(seq):
>>> print('Empty')
>>> if len(seq):
>>> print('Not empty')
Not empty
>>> print(seq[-1])
30
22.2 리스트의 할당과 복사
# 동일한 객체
>>> a = [0, 0, 0, 0, 0]
>>> = a
>>> print(a is b)
>>> print(a == b)
True
True
# a, b 리스트에 모두 반영
>>> b[2] = 99
>>> print(a)
>>> print(b)
[0, 0, 99, 0, 0]
[0, 0, 99, 0, 0]
# 다른 객체
>>> c = [0, 0, 0, 0, 0]
>>> d = c.copy()
>>> print(c is d)
>>> print(c == d)
False
True
# 주입한 객체에만 반영
>>> d[2] = 99
>>> print(c)
>>> print(d)
[0, 0, 0, 0, 0]
[0, 0, 99, 0, 0]
22.3 반복문으로 리스트의 요소를 모두 출력
>>> a = [38, 21, 53, 62, 19]
>>> for index, value in enumerate(a):
>>> print(index, value)
38
21
53
62
19
# in enumerate(리스트, start=숫자)
>>> for index, value in enumerate(a, start=1):
>>> print(index, value)
38
21
53
62
19
# while 반복문으로 요소 출력
>>> i = 0
>>> while i < len(a):
>>> print(a[i])
>>> i += 1
38
21
53
62
19
22.4 리스트의 가장 작은 수, 가장 큰 수, 합계
# 가장 작은 수
# 1
>>> smallest = a[0]
>>> for i in a:
>>> if i < smallest:
>>> smallest = i;
>>> print(smallest)
19
# 2
>>> a. sort()
>>> print(a[0])
19
# 3
>>> print(min(a))
19
# 가장 큰 수
>>> # 1
>>> a = [38, 21, 53, 62, 19]
>>> largest = a[0]
>>> for i in a:
if i > largest:
largest = i;
>>> print(largest)
62
# 2
>>> a.sort(reverse=True)
>>> print(a[0])
62
# 3
>>> print(max(a))
62
# 합계
>>> sumValue = 0
>>> for i in a:
>>> sumValue += i;
>>> print(sumValue)
>>> print(sum(a))
193
193
22.5 리스트 표현식 사용
- 식 for 변수 in 리스트
- 성능은 대괄호 방식이 더 좋다
- 대괄호 : 파이선다운 코드 , list : C언어 스타일
>>> a = [i for i in range(10)]
>>> 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]
>>> c = [i + 5 for i in range(10)]
>>> print(c)
[5, 6, 7, 8, 9, 10, 11, 12, 13, 14]
>>> d = [i * 2 for i in range(10)]
>>> print(d)
[0, 2, 4, 6, 8, 10, 12, 14, 16, 18]
>>> e = list(i * 10 for i in range(10))
>>> print(e)
[0, 10, 20, 30, 40, 50, 60, 70, 80, 90]
# 리스트 표현식 if 조건문
>>> a = [i for i in range(10) if i % 2 == 0]
>>> print(a)
[0, 2, 4, 6, 8]
>>> b = [i + 5 for i in range(10) if i % 2 == 1]
>>> print(b)
[6, 8, 10, 12, 14]
# 중첩을 이용한 구구단
>>> 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]
22.6 리스트 map 사용
>>> a = [1.2, 2.5, 3.7, 4.6]
>>> for i in range(len(a)):
>>> a[i] = int(a[i])
>>> print(a)
[1, 2, 3, 4]
>>> a = [1.2, 2.5, 3.7, 4.6]
>>> a = list(map(int, a))
>>> print(a)
[1, 2, 3, 4]
>>> a = list(map(str, range(10)))
>>> print(a)
['0', '1', '2', '3', '4', '5', '6', '7', '8', '9']
# input().split()과 map
>>> a = map(int, input().split())
>>> print(a)
>>> print(list(a))
10 20 (입력)
<map object at 0x10483d2b0>
[10, 20]
>>> a, b = [10, 20] # map(int, input().split())
>>> print(a, b)
10 20
22.7 튜플 응용
- 중복값의 경우 처음 찾은 인덱스 값으로 구한다.
>>> a = (38, 21, 53, 62, 19, 53)
>>> print(a.index(53))
2
# 특정 값의 개수
>>> print(a.count(53))
2
# for 반복문으로 요소 출력
>>> for i in a:
>>> print(i, end=' ')
>>> print()
38 21 53 62 19 53
# 튜플 표현식
>>> a = tuple(i for i in range(10) if i % 2 == 0)
>>> print(a)
(0, 2, 4, 6, 8)
# 제너레이터 사용
>>> print(i for i in range(10) if i % 2 == 0)
<generator object <genexpr> at 0x10d6b5900>
# tuple에 map 사용
>>> a = (1.2, 2.5, 3.7, 4.6)
>>> a = tuple(map(int, a))
>>> print(a)
>>> print(min(a))
>>> print(max(a))
(1, 2, 3, 4)
1
4
22.9 연습문제 : 리스트에서 특정 요소만 뽑아내기
- 다음 소스 코드(b의 공백)를 완성하여 리스트 a에 들어있는 문자열 중에서 길이가 5인 것들만 리스트 형태로 출력되게 만들자.
- 리스트 표현식 사용
a = ['alpha', 'bravo', 'charlie', 'delta', 'echo', 'foxtrot', 'golf', 'hotel', 'india']
b = [_________________________________]
print(b)
실행결과
['alpha', 'bravo', 'delta', 'hotel', 'india']
# 정답
a = ['alpha', 'bravo', 'charlie', 'delta', 'echo', 'foxtrot', 'golf', 'hotel', 'india']
b = [i for i in a if len(i) == 5]
print(b)
22.10 심사문제 : 2의 거듭제곱 리스트 생성하기
- 표준 입력으로 정수 두개가 입력될 때, 첫 번째 정수부터 두 번째 정수까지를 지수로하는 2의 거듭제곱 리스트를 출력하자.
- (첫 번째 입력 값의 범위는 1~20, 두번째 입력 값의 범위는 10~30이며, 첫번째 입력값은 두번째 입력 값보다 항상 작다)
[예제1]
표준입력
1 10
표준 출력
[2, 8, 16 , 32, 64, 128, 256, 1024]
-------------------------------------------------------------------------------------
[예제2]
표준입력
10 20
표준출력
[1024, 2048, 4096, 8192, 16384, 32768, 65536, 131072, 262144, 524288, 1048576]
# 정답
a, b = map(int,input().split())
value = []
for i in range(a, b+1):
value.append(2**i)
print(value)
728x90
반응형
'Language > Python' 카테고리의 다른 글
[코딩도장]24.문자열 응용 (0) | 2022.03.16 |
---|---|
[코딩도장]23. 2차원 리스트 (0) | 2022.03.15 |
[코딩도장]20.FizzBuzz문제 (0) | 2022.03.14 |
[코딩도장]19.계단식 별 출력 (0) | 2022.03.14 |
[코딩도장]13~18.if, for, while, break, continue (0) | 2022.03.14 |