■ 99. 순차적인 정수 리스트 만들기 (range)
예제:
for i in range(1,11):
print(i)
문제288.(카카오 경력 공채 문제를 이해하기 위해 알아야 하는 기본)
\t (탭) 을 이용해서
아래의 결과를 출력하시오
10 11 12 13 14 15 16 17 18 19
tab 으로 구분
for i in range(10,20):
print(i, end="\t")
***range 라서 (a,b)=i.split(']t')
print(a,b)
안된다!
문제289.(카카오경력공채 문제를 이해하기 위해 알아야 하는 기본)
아래의 탭으로 구분된 단어를 k_pop 리스트에 넣으시오
song='Yesterday\tLet it be\tGee(지)\t소원을 말해봐\t다시 만난 세계'
song='Yesterday\tLet it be\tGee(지)\t소원을 말해봐\t다시 만난 세계'
kpop_list=song.split('\t')
print(kpop_list)
**song뒤에 .split('\t') 바로 붙여도 됨
**잠시 순서를 바꿔서 수업 진행
■ 119. 리스트 요소를 무작위로 섞기(shuffle)
"순서용 자료를 뒤죽박죽 섞어놓는 함수"
예제:
from random import shuffle
listdata=list(range(1,11))
for i in range(3):
shuffle(listdata)
print(listdata)
문제290.
아래의 리스트를 무작위로 섞어서 3번 출력하시오
music=['Yesterday','let it be','소원을 말해봐','Gee','다만세']
from random import shuffle
music=['Yesterday','let it be','소원을 말해봐','Gee','다만세']
for i in range(3):
shuffle(music)
print(music)
********카카오문제**********
문제 설명
- 음악명으로 구성된 플레이리스트를 해당 음악의 아티스트 명을 참고해서 동일한 아티스트의 곡이 인접하지 않도록 플레이리스트를 셔플하는 알고리즘을 구현하시오
- 아래의 아티클을 보고 적합한 알고리즘을 구현하시오
(http://labs.spotify.com/2014/02/28/how-to-shuffle-songs/)
참고
- 반드시 셔플 기능을 구현해야 합니다.
- 매 실행마다 임의로 섞인 결과를 반환해야 합니다.
- 10000개 샘플 기준 3초 이내에 동작해야 합니다.
- 아티클 내용 이외에도 더 좋은 알고리즘이 있으면 그것을 구현해도 좋습니다.
- 아티클을 주의 깊게 읽어보시고 글의 목적을 파악하셔서 코드를 작성하시는 것이 필요합니다.
- Expected Output의 결과는 임의로 셔플한 결과이므로 반드시 Expected Output과 같을 필요는 없습니다.
- 한글처리에 주의하세요.
- 시간제한은 240분 입니다.
입력
- 입력의 첫 줄에는 테스트 케이스의 개수 T가 주어진다 (T<=10000)
- 각 테스트 케이스는 2줄로 구성되어 있다.
- 첫 줄에는 플레이리스트가 TSV(Tab Separated Value) 형태로 주어지고 이어서 다음 줄에는 아티스트가 TSV 형태로 주어집니다.
- 각 플레이리스트, 아티스트의 최대 길이는 4096을 넘지 않는다.
출력
- 각 테스트 케이스 별로 한줄로 적당히 셔플된 플레이리스트를 TSV 포맷으로 출력한다.
ex)
입력
1
Yesterday Let it be Gee 소원을 말해봐
Beatles Beatles 소녀시대 소녀시대
출력
소원을 말해봐 Let it be Gee Yesterday
※동일한 아티스트끼리 인접하면 안된다!!
■ 100. 리스트에서 특정 위치의 요소 얻기
문제291.
아래의 리스트에서
숫자2와
알파벳b 와
숫자5를 출력하시오!
listdata=[1,2,'a','b','c',[4,5,6]]
print(listdata[1],listdata[3],listdata[5][1])
listdata=[1,2,'a','b','c',[4,5,6]]
print(listdata.find('2'))
***안됨. list 데이터는 find 못씀.
for문으로 해제시켜서 하면 될
거라고 생각했으나 !!!!!!!!
그러나!
listdata=[1,2,'a','b','c']
for i in listdata:
if i==i.find('a'):
print(i)
find 는 데이터에 숫자가 섞여있으면 출력못한다.
(only string)
■copy와 deepcopy 모듈의 차이
1. 리스트 변수에 값을 복사하는 방법
a=[1,2,3]
b=a #b=[1,2,3]
print(b) #[1,2,3]
print(a[1]) #2
a[1]=4 #a=[1,4,3]
print(a)
※ 설명:
b=a 의 뜻은 a가 가리키는 리스트 객체를 b도 가리키겠다.
(복사는 아니다 !!)
복사하는 방법은??
a가 가지고 있는 값으로 b변수를 생성할 때 같은 값으로
복사하는 방법은?
1. [:] 을 이용한다
a=[1,2,3]
b=a[:]
print(b) #[1,2,3]
a[1]=4
print(a) #[1,4,3]
그렇다면 b 의 값은 ????
↓
print(b) #a의 변경과 관계없이 카피그대로.
2. copy 모듈을 이용한다
from copy import copy
a=[1,2,3]
b=copy(a)
print(b)
a[1]=6
print(a)
print(b)
3. deepcopy 모듈을 이용한다
a=[1,2,[3,4]]
b=copy(a)
print(b) #[1,2,[3,4]]
a[2][0]=5
print(b)
#b의 값이 [1,2,[5,4]] 로 deeplist 값이 변했다.
이런 문제점을 방지하기위해
from copy import copy, deepcopy
a=[1,2,[3,4]]
b=deepcopy(a)
print(b) #[1,2,[3,4]]
a[2][0]=5
print(a)
print(b)
※ 설명:
리스트 안의 리스트가 있으면 deepcopy 를 써서 copy 해야한다.
■ 101. 리스트에서 특정 요소의 위치 구하기(index)
문제292.
아래의 리스트를 가지고 아래의 결과를 출력하시오
a=['태양','수성','금성','지구','화성','목성','토성','천왕성','해왕성','지구']
결과: 지구는 태양계에서 3번째에 위치하고 있습니다.
지구는 태양계에서 9번째에 위치하고 있습니다.
------------------------------------------------
a = ['태양','수성','금성','지구','화성','목성','토성','천왕성','해왕성','지구']
ind = '지구'
print('%s는 태양계에서 %d번째에 위치하고 있습니다'%(ind,a.index(ind)))
print('%s는 태양계에서 %d번째에 위치하고 있습니다' %(ind,a.index(ind,a.index(ind)+1)))
------------------------------------------
a=['태양','수성','금성','지구','화성','목성','토성','천왕성','해왕성','지구']
x=len(a) #10
for i in range(x):
if a[i]=='지구':
print('%s는'%(a[i]),'태양계에서 %f번째에 위치하고 있습니다.'%(i))
----------------------------------------------------------------------
a=['태양','수성','금성','지구','화성','목성','토성','천왕성','해왕성','지구']
print(a.index('지구'))
print(a.index('지구',-1))
-1 이라는게,
맨 마지막이 -1 인데, 그 이후부터 숫자를 센다는 뜻이다.
만약 지구뒤에 다른값이 있다면??
a=['태양','수성','금성','지구','화성','목성','토성','천왕성','해왕성','지구','목성']
print(a.index('지구'))
print(a.index('지구',-2))
지구의 위치는 -2 고,
지구부터 목성순서로 숫자세기를 하는거다.
■ 102. 리스트에서 특정위치의 요소 변경하기
문제293.
아래의 리스트에서 화성을 영어로 Mars 라고 변경하시오!
a=['태양','수성','금성','지구','화성','목성','토성','천왕성','해왕성','지구','목성']
mar_index=a.index('화성')
a[mar_index]='Mars'
print(a)
■ 103. 리스트에서 특정 구간에 있는 요소 추출하기
문제294.
아래의 리스트에서 아래의 결과를 출력하시오!
a=['태양','수성','금성','지구','화성','목성','토성','천왕성','해왕성']
결과:
태양계의 암석형 행성: ['수성','금성','지구']
태양계의 가스형 행성: ['화성','목성','토성','천왕성','해왕성']
print('태양계의 암석형 행성:',a[1:4])
■ 104. 리스트에서 짝수번째 요소만 추출하기
문제295. (점심시간 문제)
아래의 리스트에서 짝수번째 요소와 홀수번째 요소 출력하기
a=['태양','수성','금성','지구','화성','목성','토성','천왕성','해왕성']
print(a[1::2])
print(a[0::2]) # 0이 없어도 출력됨
============================================================
■ 105. 리스트 요소 순서를 역순으로 만들기 ① reverse
문제296. 아래의 리스트를 역순으로 만드시오 !
a = ['태양', '수성', '금성', '지구', '화성', '목성', '토성', '천왕성', '해왕성', '지구']
결과:
['해왕성', '천왕성', '토성', '목성', '화성', '지구', '금성', '수성', '태양']
a = ['태양', '수성', '금성', '지구', '화성', '목성', '토성', '천왕성', '해왕성']
a.reverse()
print(a)
['해왕성', '천왕성', '토성', '목성', '화성', '지구', '금성', '수성', '태양']
■ 106. 리스트 요소 순서를 역순으로 만들기 ②
문제297. 이번에는 아래의 리스트를 역순으로 만들어서 b라는 변수에 저장해서 출력되게 하시오 !
a = ['태양', '수성', '금성', '지구', '화성', '목성', '토성', '천왕성', '해왕성', '지구']
print(list(b))
결과:
['해왕성', '천왕성', '토성', '목성', '화성', '지구', '금성', '수성', '태양']
------------------------------
a = ['태양', '수성', '금성', '지구', '화성', '목성', '토성', '천왕성', '해왕성', '지구']
b = reversed(a) #a값은 안 바뀜
print(list(b))
['지구', '해왕성', '천왕성', '토성', '목성', '화성', '지구', '금성', '수성', '태양']
print(b)
<list_reverseiterator object at 0x0000000003CE00F0>
▷ 저장위치만 나옴
print(type(b))
<class 'list_reverseiterator'>
※ 설명 : reverse 와 reversed 의 차이는?
reverse 는 a 의 요소를 완전히 변경해버리지만
reversed 는 변경하지 않는다.
그리고 역순함수 적용시킨 b값을 출력하려면>>>
list 씌워서 프린트 해야 한다.
■ 107. 리스트 합치기(+)
문제298.
아래의 두개의 리스트를 하나로 합쳐서 출력하시오
listdata1=['a','b','c','d','e']
listdata2=['f','g','h','i','j']
----------------------------------
listdata1=['a','b','c','d','e']
listdata2=['f','g','h','i','j']
print(listdata1+listdata2)
■ 108. 리스트 반복하기(*)
문제299.
아래의 리스트로 아래의 결과를 출력하시오
[0,1,2,0,1,2]
a=[0,1,2]
print(a*2)
■ 109. 리스트에 요소 추가하기(append)
문제300.
아래와 같이 리스트에 추가할 값을 물어보게하고
입력하면 리스트에 내용이 출력되게 하시오
print(add_list())
리스트에 추가할 값을 입력하세요 ~ a
리스트에 추가할 값을 입력하세요 ~ b
def add_list(n):
x=[]
for i in range(4):
a=input('리스트에 추가할 값을 입력하세요~')
x.append(a)
print(x)
add_list(a)
■ 110. 리스트의 특정 위치에 요소 삽입하기(insert)
문제301.
아래의 a 리스트에 '소행성' 이라는 요소를 입력하시오
a=['태양','수성','금성','지구','화성','목성','토성','천왕성','해왕성']
결과:
a=['태양','수성','금성','지구','화성','소행성','목성','토성','천왕성','해왕성']
---------------------------------
a=['태양','수성','금성','지구','화성','목성','토성','천왕성','해왕성']
a.insert(a.index('화성')+1,'소행성')
print(a)
또는 무식하게
a=['태양','수성','금성','지구','화성','목성','토성','천왕성','해왕성']
a.insert(5,'소행성')
print(a)
■ 111. 리스트의 특정위치의 요소 제거하기 (del)
※del 과 remove 의 차이?
remove 는 데이터의 요소명으로 삭제
참고: 문제302
del 은 리스트의 인덱스 번호로 삭제하는 것
a=['태양','수성','금성','지구','화성','목성','토성','천왕성','해왕성']
예: del(a[-3]) : 토성이 지워져서 나옴~
여러개 지울때는 del 이 편하다
문제302.
아래의 리스트에서 토성을 지우시오!
a=['태양','수성','금성','지구','화성','목성','토성','천왕성','해왕성']
a.remove('토성')
print(a)
■ 113. 리스트에서 특정 구간에 있는 모든 요소 제거하기
문제303.
아래의 리스트에서 토성을 포함해서
토성 이후에 나오는 모든 요소를 지우시오!
a=['태양','수성','금성','지구','화성','목성','토성','천왕성','해왕성']
del(a[-2:])
print(a)
문제304.
remonve로 2개 이상값을 지워보시오
안됩니다!
■ 114. 리스트에 있는 요소 갯수 구하기 (len)
■ 115. 리스트에 있는 특정 요소 갯수 구하기 (count)
문제305.
len 과 count 의 차이가 무엇인가?
아래의 리스트로 테스트 하시오!
a = ['태양', '수성', '금성', '지구', '화성', '목성', '토성', '천왕성', '해왕성']
print(len(a))
print(a.count('지구'))
||
a = ['태양', '수성', '금성', '지구', '화성', '목성', '토성', '천왕성', '해왕성']
sum=0
for i in a:
sum+=a.count(i) #count 는 찾아야할 값의 범위도 정해줘야 한다.
print(sum)
※설명:
len 은 리스트 전체의 요소의 갯수를 세는 함수이고
count 는 리스트 안에 특정 요소
■ 116. 리스트 제거하기(del)
예2:
namelist = ['Mary', 'Sams', 'Aimy', 'Tom', 'Michale', 'Bob', 'Kelly']
del namelist
print(namelist)
※ namelist 라는 리스트 변수를 메모리에서 완전히 지우는 명령어
■ 117. 리스트 요소 정렬하기 ① (sort)
■ 118. 리스트 요소 정렬하기 ② (sorted)
문제306.
아래의 리스트를 ABCD 순으로 정렬하시오
namelist=['Mary','Sams','Aimy','Tom','Michale','Bob','Kelly']
결과:
['Aimy', 'Bob',......]
namelist=['Mary','Sams','Aimy','Tom','Michale','Bob','Kelly']
namelist.sort()
print(namelist)
||
namelist=['Mary','Sams','Aimy','Tom','Michale','Bob','Kelly']
print(sorted(namelist))
문제307.
namelist 의 요소를 완전히 정렬해버리지 않고
namelist 의 요소를 정렬해서 b 라는 변수에 담아서
출력하시오
namelist=['Mary','Sams','Aimy','Tom','Michale','Bob','Kelly']
b=sorted(namelist)
print(b)
print(namelist)
※ 원본값은 변하지 않고, 변수 b만 정렬시키는게 sorted
■ 119. shuffle
■ 120. 리스트의 모든 요소를 인덱스와 쌍으로 출력하기(enumerate)
"열거하다라는 뜻인데 이 함수는 순서가 있는 자료형(리스트, 튜플, 문자형) 을 입력받아 인덱스 값을 포함하는 enumerate 객체를 리턴한다"
예제:
for i, name in enumerate(['body', 'foo', 'bar']):
print(i, name)
문제308.
아래의 리스트를 enumerate 를 이용해서
아래의 결과로 출력하시오
a = ['태양', '수성', '금성', '지구', '화성', '목성', '토성', '천왕성', '해왕성']
for i, name in enumerate(['태양', '수성', '금성', '지구', '화성', '목성', '토성', '천왕성', '해왕성']):
print(i, name)
하나의 row 에 뽑으려면
x=[]
for i, name in enumerate(['태양','수성','금성','지구','화성', '소행성', '목성','토성','천왕성','해왕성']):
x.append((i,name))
print(x)
||
a=['태양', '수성', '금성', '지구', '화성', '목성', '토성', '천왕성', '해왕성']
print(list(enumerate(a)))
||
a = ['태양', '수성', '금성', '지구', '화성', '목성', '토성', '천왕성', '해왕성']
x=[]
for i,name in enumerate(a):
x.append((i,name))
#print(x)
for z in x:
print(z, end=' ') #리스트 벗겨서 출력됨.
■ 121. 리스트의 모든 요소의 합 구하기 (sum)
문제309.
아래의 리스트의 요소를 다 더한 값을 출력하시오
listdata=[2,2,1,3,8,5,7,6,3,6,2,3,9,4,4]
print(sum(listdata))
■ 122. 리스트 요소가 모두 참인지 확인하기 (all, any)
문제310.
아래의 리스트 요소중에서 하나라도 True 가 있으면 True를 출력하시오
a=[True,False,True,True]
print(any(a)) #하나라도 True가 있으면 True로 출력
print(all(a)) # a에 하나라도 False가 있으면 False로 출력
■ 파이썬에서 _(언더바)를 사용하는 경우
1. 인터프리터에서 마지막 값을 저장할 때
2. 값을 무시하고 싶을 때
3. 변수나 함수명에 특별한 의미를 부여하고 싶을 때
4. 숫자 또는 문자밖의 자릿수 구분을 위한 구분자로서 사용할 때
예제:
1. 인터프리터에서 마지막 값을 저장할 때
>>> 10
>>> _
>>> _*3
30
>>> _*20
600
2. 값을 무시하고 싶을 때
>>> x, y = (1,2)
>>> x
>>> y
>>> x,_,y=(1,2,3)
>>> x
>>> y
3. 여러개의 값을 무시하고 싶을 때
>>> x,*_,y=(1,2,3,4,5)
4. for loop 문 사용시 index 무시하고 싶을 때
for _ in range(10):
print('a')
5. 변수나 함수명에 특별한 의미를 부여하고 싶을 때
예:
__init__ : 클래스가 객체화 될 때 반드시 실행되는 메소드
6. 숫자 또는 문자값의 자릿수 구분을 위한 구분자로서 사용할 때
*출력시 영향을 미치지 않음*
dec_base=1_000_000_000_000_000
print(dec_base)
dec_base=1_000_000_000_000_000
print(dec_base*2)
'python' 카테고리의 다른 글
25. 문자코드값(ord, chr, eval) (0) | 2019.03.26 |
---|---|
24. 사전(del,clear,keys,values, items,sorte) (0) | 2019.03.26 |
22. 버블정렬 (0) | 2019.03.26 |
21. 문자열 다루기(split, join, replace, encode, decode) (0) | 2019.03.26 |
20. 재귀알고리즘(구구단, 별, 팩토리얼, 최대공약수) (0) | 2019.03.26 |