ch0nny_log

[빅데이터분석] Python_10. 리스트 함수 이해하기 본문

빅데이터 분석(with 아이티윌)/python

[빅데이터분석] Python_10. 리스트 함수 이해하기

chonny 2024. 7. 31. 16:54

 

■  리스트 함수 이해하기1 (slicing)

리스트에서 특정 요소들을 추출할 때 슬라이싱을 사용합니다.

예제1. 다음 a리스트에서' 바위' 를 잘라내서 출력하시오.
a= ['낙','숫','물','이','바','위','를','뚫','는','다']
print(a[4:6])​
문제 1, 아래의 a리스트에서 '뚫는다'를 잘라내시오.
a= ['낙','숫','물','이','바','위','를','뚫','는','다']
print(a[7:])​


■  리스트 함수 이해하기2 (append)

리스트 변수에 맨 끝의 요소로 값을 추가할 떄는 append 함수를 사용합니다.

예제1.  아래의 리스트 a에서 짝수 데이터만 b라는 리스트에 담아내고 출력하시오
a = [1,2,3,4,5,6,7,8,9,10]
b = [] # 비어있는 리스트를 생성함
for i in a:
    if i% 2 ==0:
        b.append(i)

print(b)​

예제2. 아래의 a리스트의 데이터를 정제해서 b 리스트에 담고 b리스트를 출력하시오.

a = [ '1.끝내주게 숨쉬기.' , '2.간지나게 자기!', '3.작살나게 밥먹기?' ]
b = [ ]

for  i  in  a:
    b.append( i.strip('1234567890.!?') )

print(b)​
예제3. 아래의 리스트에서 정상품만 b리스트에 담아서 출력하시오. 
a = ['정상품', '정상품', '불량품', '정상품', '정상품', '정상품', '불량품', '불량품']
b = []  # b 리스트를 정의합니다.
for i in a:
    if i != '불량품':  # '불량품'이 아닌 경우에만 추가합니다.
        b.append(i)
print(b)​
예제 4. winter.txt 에서 elsa라는 단어가 포함된 단어를 다음과 같이 d라는 리스트에 담고 출력하시오. 
# 파일 열기
winter = open("c:\\data\\winter.txt")
winter2 = winter.read()

# 데이터에서 단어 추출
data = winter2.split()

# 빈 리스트 'd'를 정의합니다.
d = []

# 'elsa' 또는 'Elsa'를 포함하는 단어를 'd' 리스트에 추가합니다.
for i in data:
        if i.lower()=='elsa':
            d.append(i)

# 결과 출력
print(d)
print(len(d))​

■  리스트 함수 이해하기3 (insert, extend)

* 리스트에 요소값 추가하는 3가지 함수

1. append : 리스트 마지막에 요소명을 추가
2. insert : 리스트 특정위치에 요소 추가
3. extend: 리스트 여러개의 요소들을 한번에 추가

 

예제1. 아래 dice 리스트의 마지막 요소로 6을 추가하시오.
dice = [ 1, 2, 3, 4, 5 ]

dice.append(6)

print(dice)​

예제2.아래 dice 리스트의  4를 순서에 맞게 추가하시오.
dice = [ 1, 2, 3, 5, 6 ]

dice.insert( 3,4 )

print( dice )​
문제1. 아래의 동전 리스트에 앞면을 추가하시오.
coin = ['뒷면']

coin.insert(0, '앞면' )

print( coin )​

예제 1. a리스트의 요소로 b 리스트의 요소들을 한번에 추가하시오.
a = [1000,2000,3000,4000]
b = [5000,6000,7000,8000]

a.extend(b)
print(a)​

예제 2. a리스트의 요소로 b 리스트의 요소들을 한번에 추가하시오.
a = ['dog','cat']
b = ['tiger','elephant']

a.extend(b)
print(a)​
문제1. 위 문제에서 b가 먼저 나오게 하시오. 
a = ['dog','cat']
b = ['tiger','elephant']

animals = a+b
print(animals)​

■  리스트 함수 이해하기4 (정렬)

예제1. 다음 a 리스트의 요소들을 정렬해서 출력하시오 ! (정렬)
a = [2000,1000,4000,5000,3000]

a.sort()
print(a)​

예제2. 다음 a 리스트의 요소들을 역순으로 정렬해서 출력하시오 ! (역순 정렬 )
a = [2000,1000,4000,5000,3000]

a.sort(reverse=True)
print(a)​

예제3. 리스트의  요소들을 정렬된 상태로 출력하시오.
a = [ 2000, 1000, 4000, 5000, 3000 ]

print(sorted(a))​

문제1. 아래의 a리스트를 정렬해서 a2 라는 리스트를 구성하시오.
a = ['a','d','c','b']

a2=sorted(a)
print(a2)
문제2. 아래의 a 리스트의 요소들을 역순으로 정렬해서 출력하시오 !
a = [ 2000, 1000, 4000, 5000, 3000 ]

a.reverse()
print(a)​
문제 3. 다음의 결과를 역순으로 정렬해서 출력하시오 !
b = [ '하', '중', '상' ]
b.reverse()
print(b)​
문제4. 아래의 리스트의 요소들은 그냥 그대로 두고 역순으로 정렬된 상태로 출력하시오
b = [ '하', '중', '상' ]
b2 = list( reversed(b) )  # reversed 함수와 list 함수는 서로 짝꿍입니다. 
print(b2)
print(b)​

문제 5. 다음 a리스트 요소들을 그냥 그대로 두고 a2라는 요소들을 역순으로 정렬해서 구성하시오. 
a= [ '진짜?','대박','헐~' ]
a2 = list( reversed(a) )  # reversed 함수와 list 함수는 서로 짝꿍입니다. 
print(a2)
print(a)​


■  리스트 함수 이해하기5 (요소 찾기)

예제1. 다음 box 리스트에서 불량품이 몇개가 있는지 출력하시오 !
box = ['정상품', '정상품', '정상품', '불량품', '정상품', '불량품']

결과 : 2

box.count('불량품')​

예제2. 다음 box 리스트에서 불량품의 자리번호를 출력하시오 !
box = ['정상품', '정상품', '정상품', '불량품', '정상품', '불량품']

box.index('불량품')​


※ 두번째 불량품 자리번호를 출력하려면 어떻게 해야하는가 ? enumerate 함수 사용
예제3. enumerate 함수 이용하기 
box = ['정상품', '정상품', '정상품', '불량품', '정상품', '불량품']

for   num,  item  in  enumerate(box):
    print( num,  item )​
문제1. 아래의 box 리스트에서 불량품의 자리번호 2개를 출력하시오 !
box = ['정상품', '정상품', '정상품', '불량품', '정상품', '불량품']

for num, item in enumerate(box):
    if item == '불량품':
        print(num)​
문제2. 어제 마지막 문제 코드를 수행해서 d 리스트를 생성하시오 !
winter = open('c:\\data\\winter.txt')
data = winter.read()
data2 = data.split()
d = [ ]

for i in data2:
    st = i.strip(' 1234567890.,?!-/~*^"@#$%&')[0:4]
    if st.lower() == 'elsa':
        d.append(i)

print(d)
print(len(d))​

 

* 데이터의 종류 3가지 ?
 
 1. 정형화된 데이터  :    테이블   <------------- SQL 로 분석 가능 
 2. 비정형화된 데이터 :  텍스트, 영상, 사진  <----   파이썬 , R 로 분석가능
 3. 반정형화된 데이터  :   xml, html 과 같이 키와 값으로 이루어진 데이터
문제3. d 리스트 안에 elsa가 몇개가 있는지 카운트 하시오
winter = open('c:\\data\\winter.txt')
data = winter.read()
data2 = data.split()
d = [ ]

for i in data2:
    st = i.strip(' 1234567890.,?!-/~*^"@#$%&')[0:4]
    if st.lower() == 'elsa':
        d.append(i.lower())   # 소문자로 변경해서 입력

print(d)
print(len(d))

d.count('elsa')​

 


문제4. d 리스트 안에 elsa’s 가 몇개가 있는지 출력하시오 !

※ 리스트의 count 함수로는 count 할 수 없는 요소를 카운트 하는 방법

문제5. 아래의 리스트에서 이름에 영희가 포함된 학생은 몇명인지 출력하시오!
name = ['김인호', '최영희', '안상수', '윤성식','김영희']

cnt = 0

for  s  in   name:    # name 리스트에서 요소들을 하나씩 가져오는데
    if  '영희'  in  s:    # s 에 '영희' 가 포함되어있으면 
        cnt += 1       # cnt 를 1 증가시켜라

print (cnt)


■  리스트 함수 이해하기6 (요소 삭제)

문제1. 다음 box 리스트에서 요소명이 불량품을 제거하시오!
box =['정상품', '정상품', '정상품', '정상품', '불량품', '정상품', '불량품']
box.remove('불량품')
print(box)​
문제2. 아래의 box 리스트에서 맨뒤에 있는 '불량품' 을 지우시오 !
box =['정상품', '정상품', '정상품', '정상품', '불량품', '정상품', '불량품']
del( box[6] )
print(box)​
문제3. 아래의 box 리스트에서 요소명 불량품을 모두 지우시오. 
box = ['정상품', '정상품', '정상품', '정상품', '불량품', '정상품', '불량품']

# 삭제할 인덱스를 저장할 리스트를 생성합니다.
indexes_to_delete = []

# 리스트를 순회하면서 각 요소의 인덱스와 값을 확인합니다.
for index, item in enumerate(box):
    # 만약 요소가 '불량품'이면, 그 인덱스를 삭제할 리스트에 추가합니다.
    if item == '불량품':
        indexes_to_delete.append(index)

# 저장된 인덱스를 역순으로 순회하면서 삭제합니다.
# 역순으로 삭제하는 이유는 인덱스가 변경되지 않도록 하기 위함입니다.
for index in reversed(indexes_to_delete):
    del box[index]  # 해당 인덱스의 요소를 리스트에서 삭제합니다.

# 최종적으로 수정된 리스트를 출력합니다.
print(box)

■  리스트 함수 이해하기7. (len, sum)

예제1. 다음 box 리스트의 요소들의 갯수를 출력하시오 ! 
box =['정상품', '정상품', '정상품', '정상품', '불량품', '정상품', '불량품']

len(box)​

예제2. 아래의 리스트의 요소들의 합을 출력하시오 ! 
box = [ 1000, 2000, 3000, 4000, 5000 ]

sum(box)​

문제1. 다음의 몸무게 데이터의 평균값을 출력하시오.
a = [72,81,90,78,84,65]

sum(a)/len(a)​
문제 2. 위의 결과를 numpy를 이용해서 출력하시오
import numpy as np
a = [72,81,90,78,84,65]

np.mean(a)​

■  리스트 함수 이해하기8. (map, filter)

예제1.  다음 weight 리스트의 요소들을 가지고 다음의 결과를 출력하시오!
weight=[ 72, 81, 90, 78, 84, 65 ]

def f(x):
    if x>=80:
        return '비만'
    else:
        return '정상'

print(f(92))​
예제2.  위코드를 weight 리스트로 출력하시오
weight=[ 72, 81, 90, 78, 84, 65 ]

list(map(f,weight))  # map(함수명, 리스트명)​

문제1. 아래의 score리스트를 만들고 다음의 결과가 출력되게 하시오.
score = [78, 92, 23, 54, 67, 88]

def f(x): 
    # 입력값 x를 받아 등급을 반환하는 함수
    if x >= 80:
        return '상'
    elif x >= 50:
        return '중'
    else:
        return '하'

# f(92)의 결과를 출력
print(f(92))  # 출력: '상'

# score 리스트의 각 점수에 대해 f 함수를 적용하여 등급을 리스트로 만듭니다.
# map 함수는 각 요소에 f 함수를 적용하고, 그 결과를 반환합니다.
result = list(map(f, score))

# 결과 리스트를 출력합니다.
print(result)  # 출력: ['중', '상', '하', '중', '중', '상']​
예제2. 다음 weight 리스트에서 요소가 80이상인 것만 별도의 리스트 result 에 담아 출력하시오.
def  f2(x):
    if  x >= 80:
        return  x
    else:
        return 

weight=[ 72, 81, 90, 78, 84, 65 ]

result = list( map( f2, weight ) )
result​

설명: 위의 결과를 보면 none이 출력되고 있음. (none이 출력되지 않으려면 filter 처리해야됨)

예제3. 위의 코드에서 none이 나오지 않게 하시오. 
def  f2(x):
    if  x >= 80:
        return  x
    else:
        return 

weight=[ 72, 81, 90, 78, 84, 65 ]

result = list( filter( f2, weight ) )
result​

문제1. 다음의 온도 리스트에서 특정 범위의 온도만  추출하여 새로운 리스트로 반환하는 코드를 작성하시오.
(온도 28~35도)
temp = [22, 28, 34, 29, 30, 25, 31, 33, 27, 26, 35, 32, 24]

def f(x):
    # 온도가 28도 이상 33도 미만인 경우에만 값을 반환합니다.
    if 28 <= x < 33:
        return x
    else:
        return None  # 조건에 맞지 않으면 None을 반환합니다.

# filter 함수는 리스트의 각 요소에 f 함수를 적용하여,
# f 함수가 True를 반환하는 요소만을 남깁니다.
result = list(filter(f, temp))

print(result)​

■  리스트 함수 이해하기9. (zip, enumerate)

예제1. 다음 2개 리스트의 요소를 짝지어 출력하시오.
weight = [71,81,90,78,84,65]
result = ['정상','과체중','비만','정상','과체중','정상']

for i, k in zip(weight, result):
    print (i,k)​
문제1. 다음 3개 리스트의 요소를 짝지어 출력하시오.
name = ['김인호', '안상수', '이상식', '오연수', '강인식', '고성인'] 
weight= [ 71, 81, 90, 78, 84, 65 ]
result = ['정상', '과체중', '비만', '정상', '과체중', '정상' ]

for   n, w, r   in zip( name, weight, result ):
    print( n, w, r )​

문제2. 위에서 출력되고 있는 결과를 all_data 라는 비어있는 리스트를 만들고 append 시키시오 !
name = ['김인호', '안상수', '이상식', '오연수', '강인식', '고성인'] 
weight= [ 71, 81, 90, 78, 84, 65 ]
result = ['정상', '과체중', '비만', '정상', '과체중', '정상' ]

all_data=[]

for   n, w, r   in zip( name, weight, result ):
    all_data.append([n,w,r])

print(all_data)​

예제1. 위에서 all_data리스트에 있는 결과를 예쁘게 표형태로 출력하시오. 
from  tabulate  import  tabulate

print( tabulate( all_data, headers=['이름', '체중', '척도'], tablefmt='pretty') )​

예제2. enumerate 함수를 이용하여 아래의 name 리스트를 번호를 붙여서 출력하시오
name = ['김인호','안상수','이상식','오연수','강인식','고성인']

for i , k in enumerate(name, start =1):
    print(i,k)​
문제1. 아래의 리스트를 이용해서 다음과 같이 결과를 출력하시오.
name = ['김인호','안상수','이상식','오연수','강인식','고성인']
weight = [71,81,90,78,84,65]
result = ['정상','과체중','비만','정상','과체중','정상']

for i,(n,w,r)  in enumerate (zip(name, weight, result),start =1):
    print(i, n,w,r)​