= [1,2,3,22] a
02wk-2: 파이썬의 자료형 (3)
강의영상
https://youtube.com/playlist?list=PLQqh36zP38-yYY4_T4ZDcUeMLxFJma2B3
list 기본내용
선언
-
리스트의 선언
-
비어있는 리스트의 선언
= []
a a
[]
= list()
a a
[]
연산
-
더하기연산
1,2]+[-3,4,5] [
[1, 2, -3, 4, 5]
- 우리의 예상과 다른 결과가 나옴 \(\to\) 파이썬은 R처럼 자체적으로 좋은 계산기능을 내장하고 있지 않음.
-
브로드캐스팅과 같이 R에서는 당연히 가능했던 기능을 사용할 수 없음.
1,2,3,4,5] + 1 [
TypeError: can only concatenate list (not "int") to list
-
뺄셈은 정의되지 않음
= [1,2,1,2]
a-[1,2] a
TypeError: unsupported operand type(s) for -: 'list' and 'list'
-
곱하기는 정의가능
1,2]*3 [
[1, 2, 1, 2, 1, 2]
-
나눗셈은 정의되지 않음
1,2,1,2,1,2] /3 [
TypeError: unsupported operand type(s) for /: 'list' and 'int'
-
더하기와 곱하기는 원소의 추가와 반복추가를 의미하지만 그렇다고 해서 뺄셈과 나눗셈이 원소의 삭제를 의미하는것은 아님
-
더하기와 곱하기가 원소의 추가와 반복추가를 의미하여 편리할때도 있긴하지만, 우리는 산술적인 +
, *
를 원하는 경우도 있다. 이럴 경우는 어떻게 할 수 있을까?
(예제)
=[1,2]
a=[3,4] b
a+b = [4,6] 이 되도록 하려면?
(풀이1)
0]+b[0],a[1]+b[1]] [a[
[4, 6]
풀이가 가능한 이유? a,b는 리스트이지만 a[0], a[1], b[0], b[1] 은 각각 인트형임. 인트형은 + 연산이 가능했음.
(풀이2)
numpy 패키지 (파이썬의 여러 수치연산들을 담당하는 라이브러리)
- 이러한 벡터연산은 누구나 필요로 하는 연산임.
- 내가 아니더라도 누군가가 프로그램화 해놓았을 것임.
- 그 누군가가 자신이 만든 코드를 잘 정리하여 무료로 배포했을 수도 있음. (패키지를 배포한다고 표현)
- 그 패키지를 우리는 가져와서 설치한뒤 사용하기만 하면된다.
패키지를 설치하는 방법
!pip install numpy
# 최신버전을 설치함!conda install -c conda-forge numpy -y
# 안전한 버전을 설치함
설치된 패키지를 사용하는 방법
import numpy
한뒤에numpy.??
로 기능을 사용import numpy as np
한뒤에np.??
로 기능을 사용
import numpy ## 설치한패키지를 쓰겠다고 선언함
=[1,2]
a=[3,4] b
= numpy.array(a)
aa = numpy.array(b) bb
+bb aa
array([4, 6])
여러가지 연산 가능 (마치 R처럼 쓸 수 있음)
2*aa
array([2, 4])
2*aa+1
array([3, 5])
2*aa+1+bb
array([6, 9])
(풀이3)
import numpy as np ## 설치한 numpy라는 패키지를 쓰겠음. 그런데 numpy말고 np라는 이름으로 쓰겠음
+np.array(b) np.array(a)
array([4, 6])
인덱싱
-
str형과 동일한 방식
=[11,22,33,44,55] # 0 -4 -3 -2 -1 a
-2:] # 끝의 2개의 원소를 뽑음 a[
[44, 55]
list 고급내용 1
콘테이너형 객체
-
리스트의 원소는 int, float 따위만 가능한 것이 아니다. (리스트는 컨테이너형 객체이므로)
= [1,3.14,True,'a',[1,2],
lst 1,2),{'name':'iu','age':27},{1,2,3}] (
lst
[1, 3.14, True, 'a', [1, 2], (1, 2), {'name': 'iu', 'age': 27}, {1, 2, 3}]
각 원소의 타입을 알아보자.
type(lst[0])
int
type(lst[1])
float
type(lst[2])
bool
type(lst[3])
str
type(lst[4])
list
type(lst[5])
tuple
type(lst[6])
dict
type(lst[7])
set
-
str은 컨테이너형이 아니다.
'abcd'[2]
'c'
- str의 모든 원소는 문자임
가변객체
-
리스트는 원소를 수정할 수 있다. (리스트는 가변객체이므로)
=[11,22,33]
a a
[11, 22, 33]
0] a[
11
0]=111 a[
a
[111, 22, 33]
-
원소수정은 당연한 기능같은데 이것이 불가능한 경우도 있다.
(가능한경우)
=['g','u','e','b','i','n']
a a
['g', 'u', 'e', 'b', 'i', 'n']
0] a[
'g'
0]='G' a[
a
['G', 'u', 'e', 'b', 'i', 'n']
(불가능한경우)
='guebin'
a a
'guebin'
0] a[
'g'
0]='G' a[
TypeError: 'str' object does not support item assignment
리스트의 원소 삭제
(예제1) del을 이용한 원소삭제
아래와 같이 문자로 된 리스트를 선언하자.
=['g','u','e','b','i','n']
a a
['g', 'u', 'e', 'b', 'i', 'n']
사실 더 쉽게 선언할 수 있음
list('guebin')
['g', 'u', 'e', 'b', 'i', 'n']
첫번째 원소를 삭제하고 싶다면?
del a[0]
a
['u', 'e', 'b', 'i', 'n']
이 상태에서 다시 첫번째 원소를 삭제한다면?
del a[0]
a
['e', 'b', 'i', 'n']
(예제2) pop을 이용한 원소삭제
=list('guebin')
a a
['g', 'u', 'e', 'b', 'i', 'n']
0) a.pop(
'g'
a
['u', 'e', 'b', 'i', 'n']
0) a.pop(
'u'
a
['e', 'b', 'i', 'n']
HW 0315
1
. 길이가 0인 리스트를 만들어라. (비어있는 리스트를 만들어라)
(풀이1)
[]
[]
(풀이2)
list()
[]
2
. 다음의 실행값 중 가장 큰 숫자가 나오는 보기를 골라라. (에러가 나는 코드는 정답에서 제외함)
len(3.14)
(a) len([3.14])
(b) len('3.14') (c)
(풀이)
len(3.14)
TypeError: object of type 'float' has no len()
len([3.14])
1
len('3.14')
4
따라서 답은 (c)
3
. 아래의 예제를 관찰하라.
'제 이름은 {}입니다'.format('최규빈')
'제 이름은 최규빈입니다'
'제 이름은 {}이고 사는곳은 {}입니다.'.format('최규빈','전주')
'제 이름은 최규빈이고 사는곳은 전주입니다.'
이 예제를 바탕으로 문자열에 포함된 .format()
함수의 기능을 유추하라. 그리고 아래의 결과를 확인하라.
= '전북대학교 학생엠티가 {}월{}일-{}월{}일 완주 곶감펜션에서 있다고 합니다. 자세한 일정 등은 다시 공지하겠습니다.'
string format(3,24,3,25) string.
ChatGPT를 활용하여 .format()
함수의 기능을 학습하라.
(풀이)
생략
4
. 아래의 예제를 관찰하라.
'abcdefg'.replace('g','u')
'abcdefu'
이 예제를 바탕으로 문자열의 .replace()
기능을 유추하라. 유추한 기능을 chatGPT로 확인하라.
(풀이)
생략
5
. 리스트자료형의 +
와 *
연산을 이용하여 아래와 같은 list를 생성하라.
1, 2, 2, 3, 3, 3, 4, 4, 4, 4, 5, 5, 5, 5, 5] [
[1, 2, 2, 3, 3, 3, 4, 4, 4, 4, 5, 5, 5, 5, 5]
hint: 아래의 코드를 관찰해보세요
1]*1+[2]*2 [
[1, 2, 2]
(풀이)
1]*1+[2]*2+[3]*3+[4]*4+[5]*5 [
[1, 2, 2, 3, 3, 3, 4, 4, 4, 4, 5, 5, 5, 5, 5]
6
. 넘파이를 이용하여 아래와 같은 결과가 나오도록 코드가 작성하라.
\[\begin{bmatrix} 1 \\ 2 \end{bmatrix} + \begin{bmatrix} 11 \\ 22 \end{bmatrix} = \begin{bmatrix} 12 \\ 24 \end{bmatrix}\]
(풀이)
import numpy as np
1,2]) + np.array([11,22]) # 풀이1 np.array([
array([12, 24])
1],[2]]) + np.array([[11],[22]]) # 풀이2 np.array([[
array([[12],
[24]])
풀이1,2 모두 좋음
7
. 아래와 같은 벡터 \({\boldsymbol a}\)가 있다고 하자.
\[\boldsymbol{a}= \begin{bmatrix} 12 \\ 24 \end{bmatrix}\]
넘파이를 이용하여 아래의 결과가 나오게 하는 코드를 작성하라.
\[2\boldsymbol{a}= \begin{bmatrix} 24 \\ 48 \end{bmatrix}\]
(풀이)
2*np.array([12,24]) # 풀이1
array([24, 48])
2*np.array([[12],[24]]) # 풀이2
array([[24],
[48]])