본문 바로가기
First step/AI 기초반

[TIL]21.06.17

by Joshua21 2021. 6. 23.


#count 리스트에서 특정 값의 갯수를 구함
a = [10,20,30,15,20,40]

print(a.count(20))


#reverse 쓰기
a = [10,20,30,15,20,40]
a.reverse()
print(a)

#sort는리스트의 요소를 작은순서대로 정렬
a = [10,20,30,15,20,40]

a.sort()#오름차순 값이 작은 순서대로 정렬 sort(reverse=False)와 같음
print(a)


a.sort(reverse=True)#내림차순 값이 큰 순서대로 정렬
print(a)


#sort 활용하여 리스트내의 최대 최소값 구하기
a = [10,20,30,15,20,40]

a.sort()

print('최소값 : ',a[0])
print('최대값 : ',a[-1])

#clear 리스트내의 모든 요소 삭제
a = [10,20,30,15,20,40]
a.clear()
print(a)

# del로 리스트내의모든 요소 삭제
a = [10,20,30,15,20,40]
del a[:]
print(a)


#리스트를 슬라이스로 조작하기
a = [10,20,30]
a[len(a):] = [500] #a.append(500)와 같음
print(a)

#요소가 여러개 들어있는 리스트를 할당할때 a리스트 끝에 다른리스트연결 
a = [10,20,30]
a[len(a):] = [500,600] #a.extend([500,600])와 같음
print(a)


# 리스트를 다른 변수에 할당하면 리스트는 두개가될것 같지만 실제로는 리스트가한개임
a=[0,0,0,0,0] 
b=a # a의주소지를 b로 옮김 
print(a is b)# a와 b는 같음으로 요소를변경하면 a,b 모두에 반영됨
print(a)
print(b)

#리스트 a,b를 완전히 두개로 만들려면 copy로 모든 요소를 복사해야함
a=[0,0,0,0,0]
b=a.copy()
print(a is b) #False 둘은 같은 객체는 아님
print(a == b) #True 그러나 값은 같음

a = [38,21,53,62,19]
for i,v in enumerate(a):#index,value 값이 함꼐 출력
    print(i,v)


a = [38,21,53,62,19]
for i,v in enumerate(a):
    print(i+1,v) #인덱스 1부터 출력도 가능


a = [38,21,53,62,19]
for i,v in enumerate(a,start=1): # start=1 하면 인덱스 1부터 시작
    print(i,v)


#20을 포함한 인덱스 표시하기
a=[10,20,30,40,20,50,20,30,60,70,20]
b=[]
for i,v in enumerate(a):    
    if v == 20:
       b.append(i)
        
print(b)

a = [38,21,53,62,19]
i=0
while i < len(a):
    print(a[i])
    i+=1

a = [38,21,53,62,19]
largest=0
smallest=100000000
for i in a:

    if i > largest:
        largest=i
    elif i < smallest :
        smallest=i
print(largest)
print(smallest)
  
a = [38,21,53,62,19]
a.sort()
print(a[0])

a.sort(reverse=True)

print(a[0])

a = [38,21,53,62,19]

print(min(a))

print(max(a))

# sum 리스트안에 모든 값을 더해
a=[10,10,10,10,10]
b=0
for i in a:
    b+=i

print(b)    
print(sum(a))



while i <=10:
    empty.append(i)
    i+=1


numbers=[]

for i in range(10):
    numbers.append(i+1)
print(numbers)

#홀수 제거하기
i = len(numbers)-1

while i >=0:
    if numbers[i]%2==1:
        del numbers[i]
    i-=1        
print(numbers)

#0번째 자리에 20삽입     
numbers.insert(0,20)
print(numbers)
#20을 찾아서 제거
numbers.remove(20)
print(numbers)
#4가 있는 인덱스 출력
numbers.index(4)
#내림차순 정렬
numbers.sort(reverse=True)

print(numbers)


#리스트 표현식 리스트 안에 for, if문을 사용할수있음 이를 comprehension 이라함

a=[i for i in range(10)] #앞의 i 로 리스트를 생성

print(a)

b= list(i for i in range(10))
print(b)


a=[i for i in range(10) if i%2 ==0]

print(a)

b=[i for i in range(6,16) if i%2 ==0]
print(b)
b=[i+5 for i in range(10) if i%2 ==1]
print(b)


#리스트안에 구구단 만들기
gugudan=[i*x for i in range (2,10)
            for x in range(1,10) ] #들여 쓰기도가능 가독성에 좋음
print(gugudan)


a=[1.2,2.5,3.7,4.6]
for i in range(len(a)):
    a[i]=int(a[i])
print(a)


a=[1.2,2.5,3.7,4.6]
a= list(map(int,a))#map을 list로 언팩 해서 출력가
print(a)


a=list(map(str,range(10)))

print(a)

a=[map(str,range(10))]

print(a)

#리스트에 map 사용하기
q=list(map(int,'12345'))
w=list(map(float,'12345'))
e=list(map(str,'12345'))
print(q)
print(w)
print(e)


#시퀀스 객체는 이터레이터가 된다

x=input().split()
m=map(int,x)
a,b=m

print(a)#언팩
print(b)#언팩
print(m) 


#같은 값이  여러개일경우 index 메소드는 처음 찾은 인덱스를 구함
a=(38,21,53,62,19,53)

print(a.index(53))
print(a.count(53))

for i in a:
    print(i,end=' ')

i=0
while i < len(a):
    print(a[i],end=' ')
    i+=1
    

#반복문으로 튜플만들기
a = tuple(i for i in range(10) if i%2==0)
print(a)
#(i for i in range(10) if i%2==0)

#리스트에썻던것 처럼 map, 메소드 사용가
a = (1.2,2.5,3.7,4.6)
a = tuple(map(int,a))
print(a)

min(a)
max(a)
sum(a)

#문자열의 길이가 5인 것만 표
a= ['alpah','bravo','charlie','delta','echo','foxtrot','golf','hotel','india']

b=[i for i in a if len(i) == 5]
print(b)


b=[]
while True:
    num1,num2=map(int,input('숫자 2개 입력').split())
    if 0<num1<=20 and 10<num2<=30 :

        for i in range(num1,num2+1):
            a=2**i                    
            b.append(a)        
        break
    else:
        print('잘못입력')
        break 
        
del b[1]
del b[-2]

print(b)

num1,num2=map(int,input('숫자 2개 입력').split())

if num1<1 or num1>20:
    print('error1')
elif num2<10 or num2>30:
    print('error2')
else:
    b=[2**i for i in range(num1,num2+1)]
    print(b)
    del b[1]
    del b[-2]
    print(b)


ai_classes = {
    'class01' : [#키1 
                {'name' : '서준', 'age' : 24},
                {'name' : '하준', 'age' : 34},
                {'name' : '도윤', 'age' : 37},
                {'name' : '시윤', 'age' : 19},
                {'name' : '은우', 'age' : 31}
     ],
   'class02' : [#키2  
                  {'name' : '지호', 'age' : 34},
                  {'name' : '예준', 'age' : 19},
                  {'name' : '동원', 'age' : 21},
                  {'name' : '민정', 'age' : 22},
                  {'name' : '효주', 'age' : 24}
     ]
 }
#딕셔너리의키와 값중에 값이 리스트였고 리스트에 인덱스로 접근하니까또 딕셔너리가나옴
for keys in ai_classes:#키1,키2불러옴 -> 리스트 2개
    for i in range(len(ai_classes[keys])):#리스트의 길이 전체에서 값을 다 뽑아옴
        if ai_classes[keys][i]["age"]>=30:
            print(ai_classes[keys][i]["name"],":", ai_classes[keys][i]["age"] ,end=" \t")

#내풀이 더 간단히 만들수도 있었음
import random
for x in range(10):
    i=0
    lotto=[]
    while  7 > i:
        num = random.randint(1,50)
        lotto.append(num)
        i+=1
        if num not in lotto:
            lotto.append(num)
        else:
            continue
    lotto.sort()
    print(lotto)

#로또 자동뽑기 만들기 답
import random
for x in range(10):
    lotto=[]
    while  7 > len(lotto):
        num = random.randint(1,50)        
        if num not in lotto:
            lotto.append(num)
    lotto.sort()

    print(lotto)


#random.sample 중복 없이 뽑기가능  random.choice 찾아보기

#2차원 리스트 가로 X 세로 형태행과 열 모두 0부터 시작
#리스트의 요소에 접근할때는 더 큰범위부터 작은범위로 접근
a = [[10,20],[30,40],[50,60]]

print(a[2][1])

#연습예제 for문
a = [[10,20],[30,40],[50,60]]

for i in a:
    for x in i:
        print(x,end=' ')
    print()

a = [[10,20],[30,40],[50,60]]

for x,y in a:
    print(x,y,end=' ')
    print()

#len에서 인덱스값 접근하기
a = [[10,20],[30,40],[50,60]]
for i in range(len(a)):
    for j in range(len(a[i])):
        print(a[i][j],end=' ')
    print()        



#연습문제 while문
a = [[10,20],[30,40],[50,60]]
i=0
while i  < len(a):
    x,y=a[i]
    print(x,y)
    i+=1


a = [[10,20],[30,40],[50,60]]
i=0 
while i  < len(a):
    j=0
    while j < len(a[i]):
        print(a[i][j],end=' ')
        j+=1
    print()

    i+=1

 
#연습문제 위와 같은데요소만 한개씩 늘린거
a=[[1,2,3],[5,6,7],[8,9,10],[12,13,14]]

for i in range(len(a)):
    x,y,z=a[i]
    print(x,y,z,end=' ' )
    print()
x=0


a=[[1,2,3],[5,6,7],[8,9,10],[12,13,14]]
i=0
while i < len(a):
    x,y,z=a[i]
    print(x,y,z,end=' ' )
    print()
    i+=1


# for반복문으로 2차원 리스트 만들기
a=[]
for i in range(3):
    x=[]
    for b in range(2):
        x.append(0)
    a.append(x)
print(a)    

#   [ '[1차원 리스트]' 2차원 리스트]
a=[[0 for j in range(2)] for i in range(3)]

print(a)
'''

#list 표현식연습문제 규칙이수열인줄 알고 해
a=[[0]* i for i in [3,1,3,2,5]]
print(a)

a=[3,1,3,2,5]
b=[]
for i in a:
    line = []
    for j in range(i):
        line.append(0)
    b.append(line)
print(b)    
    


'First step > AI 기초반' 카테고리의 다른 글

[TIL]21.06.21  (0) 2021.06.23
[TIL]21.06.18  (1) 2021.06.23
[TIL]21.06.16  (0) 2021.06.23
[TIL]21.06.14  (0) 2021.06.23
[TIL]21.06.11  (0) 2021.06.23