<jupyter_start><jupyter_text>■ 예제106. 리스트에 요소 추가하기(append) 리스트 객체의 append() 메소드는 인자로 입력된 값을 리스트의 맨 마지막 요소로 추가<jupyter_code># 예제
ls=[]
for i in range(3):
    txt = input('리스트에 추가할 값을 입력하세요 ~')
    ls.append(txt)
    print(ls)
ls<jupyter_output>리스트에 추가할 값을 입력하세요 ~a
['a']
리스트에 추가할 값을 입력하세요 ~123
['a', '123']
리스트에 추가할 값을 입력하세요 ~이아퍼
['a', '123', '이아퍼']<jupyter_text>※ 문제218. 오라클과 파이썬을 연동하여 우리반 나이 데이터를 age라는 리스트에 append해서 다 담으시오<jupyter_code>from my_loc import oracle as oc
emp11=oc.connect('emp11')
rs=np.array(emp11[['ENAME','AGE']])
age=[i for i in rs]
age<jupyter_output><empty_output><jupyter_text>※ 문제219. 위의 나이 데이터에 최댓값, 최솟값, 평균값, 토탈값, 분산값, 표준편차값을 출력하시오<jupyter_code>avg=np.array([i[1] for i in rs]).mean()
total=np.array([i[1] for i in rs]).sum()
max_age=np.array([i[1] for i in rs]).max()
min_age=np.array([i[1] for i in rs]).min()
var_age=np.array([i[1] for i in rs]).var()
std_age=np.array([i[1] for i in rs]).std()
print(avg)
print(total)
print(max_age)
print(min_age)
print(var_age)
print(std_age)
age_rs=[]
for i in rs:
    age_rs.append(i[1])
print(f'최댓값:{np.max(age_rs)}\n최솟값:{np.min(age_rs)}\n토탈값:{np.sum(age_rs)}\n평균값:{np.mean(age_rs)}\n분산값:{np.var(age_rs)}\n\
표준편차:{np.std(age_rs)}')<jupyter_output>최댓값:35
최솟값:24
토탈값:851
평균값:28.366666666666667
분산값:7.365555555555557
표준편차:2.7139557025779837<jupyter_text>※ 문제220. 초등학생 키 십만개를 파이썬으로 만드는데 평균을 150으로 하고 표준편차를 5로 해서 십만개의 키 숫자를 생성하시오<jupyter_code>avg=150
std=5
height=np.random.randn(100_000)*std+avg
height<jupyter_output><empty_output><jupyter_text>※ 문제221. 위의 초등학생 키 데이터를 가지고 히스토그램 그래프를 그리시오  ※ 히스토그램 그래프란?```계급을 가로축, 도수를 세로축에 나타낸 뒤 각 계급의 크기를 가로의 길이로, 도수를 세로의 길이로 하는 직사각형을 차례로 나타낸 그래프```<jupyter_code>import matplotlib.pyplot as plt
import numpy as np

bins=np.arange(142,161,2) # 계급의 크기를 나타내는 가로의 길이 설정
# print(bins) [142 144 146 148 150 152 154 156 158 160]
hist, bins=np.histogram(height, bins)
# print(hist) [ 6107  9717 13270 15426 15539 13277  9625  6006  3188]

plt.xticks(bins, fontsize=10)
plt.grid() # 격자 모양 생성
plt.hist(height,bins,rwidth=0.8, color='red') # rwidth: 히스토그램 그래프의 넓이<jupyter_output><empty_output><jupyter_text>※ 문제222. 우리반 나이데이터를 히스토그램 그래프로 그리시오<jupyter_code>age=[i[1] for i in rs]
bins=np.arange(24,35,2)
hist, bins=np.histogram(age, bins)
plt.xticks(bins, fontsize=20)
plt.yticks(np.arange(0,hist.max()), fontsize=20)
plt.grid()
plt.hist(age, bins, rwidth=1, color='blue')<jupyter_output><empty_output><jupyter_text>■ 예제107. 리스트의 특정 위치에 요소 입력하기(insert) 리스트 객체의 insert() 메소드는 리스트의 특정 위치에 새로운 요소를 입력<jupyter_code># 예제
a=[1,2,3,4,5]
a.insert(3,'b')
a<jupyter_output><empty_output><jupyter_text>※ 문제223. 아래의 a 리스트에 화성 다음에 소행성을 입력하시오<jupyter_code>a=['태양','수성','금성','지구','화성','목성','토성','천왕성','해왕성']
a.insert(a.index('목성'),'소행성') # a.insert(a.index('화성')+1,'소행성')
a<jupyter_output><empty_output><jupyter_text>■ 예제108. 리스트의 특정 위치에 요소 제거하기(del)    ※ del과 remove의 차이    remove는 요소명으로 삭제    del은 리스트의 index번호로 삭제<jupyter_code># 예제
a=['태양','수성','금성','지구','화성','목성','토성','천왕성','해왕성','명왕성']
a.remove('명왕성')
a
del(a[a.index('금성')])
a<jupyter_output><empty_output><jupyter_text>■ 예제109. 리스트의 특정 위치에 요소 제거하기(remove) 리스트에서 특정 요소의 값을 알고 있을 때 그 요소를 제거하는 방법은 리스트 객체의 remove() 메소드를 이용  ■ 예제110. 리스트의 특정 구간에 있는 모든 요소 제거하기 리스트 객체에서 특정 구간에 있는 요소들을 제거하려면 del과 슬라이싱을 이용<jupyter_code># 예제 : 아래의 리스트에서 금성부터 목성까지 지우시오
a=['태양','수성','금성','지구','화성','목성','토성','천왕성','해왕성']
del(a[2:a.index('토성')])
a<jupyter_output><empty_output><jupyter_text>※ 문제224. a 리스트에서 있는 모든 요소를 다 지우시오<jupyter_code>a=['태양','수성','금성','지구','화성','목성','토성','천왕성','해왕성']
del(a[:])
a<jupyter_output><empty_output><jupyter_text>※ del a 는 a 리스트를 메모리에서 제거하는 명령  ■ 예제111. 리스트의 있는 요소 개수를 구하기(len) 파이썬 내장함수 len()은 시퀀스 자료형의 크기를 구하는 함수 len()을 리스트에 적용하면 리스트의 모든 요소의 개수를 리턴<jupyter_code># 예제
a=['태양','수성','금성','지구','화성','목성','토성','천왕성','해왕성']
len(a)<jupyter_output><empty_output><jupyter_text>※ 문제225. 아래의 SQL을 파이썬으로 구현하시오```sqlselect count(empno)    from emp;    ```<jupyter_code>import pandas as pd
emp=oc.connect('emp')
len(emp.ENAME)<jupyter_output><empty_output><jupyter_text>■ 예제112. 리스트에서 특정 요소 개수 구하기(count) list.count() 는 리스트 객체 list에서 값이 동일한 요소의 개수를 구하여 정수형으로 리턴<jupyter_code># 예제
ls=[2,2,1,3,8,5,7]
ls.count(2) # 2의 개수<jupyter_output><empty_output><jupyter_text>※ 문제226. 우리반에 27살이 몇 명인지 구하시오<jupyter_code>emp11=oc.connect('emp11')
list(emp11['AGE']).count(27)<jupyter_output><empty_output><jupyter_text>■ 예제113. 리스트 제거하기 (del) 리스트 자체를 메모리에서 제거하려면 다음과 같이 del 명령어를 수행<jupyter_code>del ls
ls<jupyter_output><empty_output><jupyter_text>※ 문제227. 파이썬에서 정의된 모든 변수들을 확인하시오<jupyter_code>dir()
globals() # 전역 변수들 확인<jupyter_output><empty_output><jupyter_text>※ 문제228. 파이썬에서 정의된 변수들을 모두 지우시오<jupyter_code>all = [var for var in globals() if var[0] != "_"]
for var in all:
    del globals()[var]
dir()<jupyter_output><empty_output><jupyter_text>■ 예제114. 리스트의 요소 정렬하기(sort) list.sort()는 리스트 객체 list의 모든 요소를 정렬 sort()와 sorted()의 다른점    sort() 메소드는 원본을 변경    sorted()는 원본 리스트는 그대로 두고 정렬한 결과 리스트만 리턴<jupyter_code># 예제
ls=[2,2,1,3,8,7,5]
ls.sort()
ls<jupyter_output><empty_output><jupyter_text>※ 문제229. 위의 ls의 요소를 역순으로 정렬하시오<jupyter_code># ls.reverse()
ls.sort(reverse=True)
ls<jupyter_output><empty_output><jupyter_text>■ 예제115. 리스트 요소 정렬하기(sorted) 파이썬 내장 함수 sorted()를 이용하여 리스트를 정렬할 수도 있다 리스트 객체의 sorted()는 원본 리스트는 그대로 두고 정렬한 결과 리스트만 리턴<jupyter_code># 예제
ls=[2,2,1,3,8,5,7]
rs=sorted(ls)
rs1=sorted(ls, reverse=True)
rs, rs1<jupyter_output><empty_output><jupyter_text>■ 예제116. 리스트 요소를 무작위로 섞기(shuffle) 파이썬 기본 모듈인 random은 의사 난수(Pseudo random number) 발생기를 구현한 모듈 이 모듈이 제공하는 shuffle()은 list의 요소를 무작위로 섞는데 활용<jupyter_code># 예제
from random import shuffle
ls=[1,2,3,4,5,6,7,8,9,10]
shuffle(ls)
ls<jupyter_output><empty_output><jupyter_text>※ 문제230. 아래의 음악 리스트를 생성하고 랜덤으로 shuffle 시키시오<jupyter_code>from random import shuffle
artist=['소녀시대','소녀시대','방탄소년단','방탄소년단']
music=['소원을 말해봐','다시 만난 세계','아이돌','작은것들을 위한 시']
shuffle(music)
print(music)<jupyter_output>['다시 만난 세계', '작은것들을 위한 시', '소원을 말해봐', '아이돌']<jupyter_text>■ defaultdict 란?    defaultdict() 란 말 그대로 dictionary의 기본값을 정의하고 값이 없더라도 에러를 출력하지 않고 기본값을 출력하는 것<jupyter_code># 1. 딕셔너리를 사용했을 때
d2={}
d2['one']='a' # d2[키]=값
d2['two']='b'
d2
d2['kkk'] # 딕셔너리에 키만 제공하고 값을 제공하지 않으면 에러 발생
d2
# 2. defaultdict를 사용했을 때
from collections import defaultdict
d3=defaultdict(list) # 리스트 형태의 딕셔너리
d3['one']
d3['two']
d3<jupyter_output><empty_output><jupyter_text>■ 예제117. 리스트의 모든 요소를 인덱스와 쌍으로 추출하기(enumerate) 파이썬 내장함수 enumerate()는 시퀀스 자료형을 인자로 받아 각 요소를 인덱스와 함께 쌍으로 추출할 수 있는 반복 가능한 자료인 enumerate 객체를 리턴 enumerate 객체는 주로 for문과 함께 자주 사용되고 list()를 이용해서 리스트 객체를 변환할 수 있다<jupyter_code>emp11=['정주희','이준호','홍승희','박상희']
rs=list(enumerate(emp11))
for i, name in enumerate(emp11):
    print(i, name)<jupyter_output>0 정주희
1 이준호
2 홍승희
3 박상희<jupyter_text>default dictionary와 enumerate를 이용해서 가수를 키로 하고 음악명을 값으로 구성<jupyter_code>from collections import defaultdict

artist=['소녀시대','소녀시대','BTS','BTS']
music=['다시 만난 세계','Gee','DNA','Fire']
box=defaultdict(list)
for i, arti in enumerate(artist):
    box[arti].append(music[i])
box<jupyter_output><empty_output><jupyter_text>※ 문제231. 위의 box 딕셔너리에서 음악만 추출해서 아래와 같이 출력되게 하시오```['다시 만난 세계','Gee','DNA','Fire']```<jupyter_code>ls=[]
for j in box.values():
    ls += j
ls
rs=[]
for i in box.values():
    for j in i:
        rs.append(j)
rs<jupyter_output><empty_output><jupyter_text>※ 문제232. shuffle을 이용해서 아래와 같이 코드를 실행할 때 마다 아래와 같이 음악이 계속 섞이게 하시오<jupyter_code>shuffle(ls)
ls<jupyter_output><empty_output><jupyter_text>※ (오늘의 마지막 문제)(파이썬 알고리즘 문제 35번) shuffle을 이용해서 아래와 같이 수행되게 하시오```['다만세','Fire','Gee','DNA']['DNA','다만세','Fire','Gee'] 같은 아티스트의 노래가 옆에 나오지 않게 shuffle```<jupyter_code>artist=['소녀시대','소녀시대','BTS','BTS','Muse','Muse','Dream','Dream']
music=['다시 만난 세계','Gee','DNA','Fire','PIB','Panic Room','Take the time','Pull me under']
box=defaultdict(list)
for i, arti in enumerate(artist):
    box[arti].append(music[i])

song=[]
for i,j in box.items():
    song += j
    
alist=list(zip(artist,music))

while True:
    play=[]
    shuffle(alist)
    for i in range(len(song)-1):
        if alist[i][0] == alist[i+1][0]:
            break
    else: break
        
[i[1] for i in alist]<jupyter_output><empty_output>
{'fraction_non_alphanumeric': 0.16800792373405968, 'fraction_numerical': 0.043704345672898354, 'mean_word_length': 6.167701863354037, 'pattern_counts': {'":': 0, '<': 113, '<?xml version=': 0, '>': 113, 'https://': 0, 'lorem ipsum': 0, 'www.': 0, 'xml': 0}, 'pii_count': 0, 'substrings_counts': 2, 'word_list_counts': {'cursed_substrings.json': 1, 'profanity_word_list.json': 0, 'sexual_word_list.json': 0, 'zh_pornsignals.json': 0}}
{'chain_length': '29', 'dir': 'jupyter-structured-clean-dedup', 'id': '205715', 'license': 'MIT', 'n_tokens_mistral': 5255, 'n_tokens_neox': 6379, 'n_words': 865, 'path': '10-2. Python ch.106 ~ Q. ~232 (200525).ipynb', 'repo_name': 'Adrian123K/python_class', 'size': '8077'}