본문 바로가기

python

23. 리스트(range, copy, index, reverse, append, insert, del, remove, len, count, del, sort, shuffle, enumerate, all, any)

728x90
반응형

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)

 


 

 

 

 


728x90
반응형