티스토리 뷰

# 다른 언어도 마찬가지로 컴퓨터는 소수를 정확하게 표현 못한다.
# 컴퓨터는 이진수만 받아들일수 있기 떄문에 어쩔수 없이 나오는 문제이다.

a= 0.3+0.6
print(a)
if a==0.9:
    print(True)
else:
    print(False)
a= 0.3+0.6
print(round(a,4)) #소수 5번째자리에서 반올림     인자한개면 1번째자리에서 반올림        
if round(a,4) == 0.9:
    print(True)
else:
    print(False)
a=7
b=3
#몫 
print(a//b)
#빈리스트 선언하는 방법
a=[]
print(a)
a=list()
print(a)
#크기가 N인 1차원 리스트 초기화
n=9
a=[0]*n
print(a)
#인덱스 슬라이싱
a=[1,2,3,4,5,6,7]
print(a[-3])
print(a[1:5:3])  # 1번인덱스와 (1+3)번 인덱스 print
#리스트 컴프리헨션
# 컴프리헨션(Comprehension)이란?
# 검색하면 포함,이해,압축 이란 뜻을 갖고있다.
#내 생각엔 리스트 컴프리헨션이면 기존언어면 나눠 써야했을
#문법들을 한 문장안에 다 표현함으로 압축이란 뜻으로 쓰이지 않았을까 싶다

#문법 구조는
# array=[a a가 변화할 조건문] #a는 리스트안에 넣게 될 값이다. 그리고 그 뒤에 원하는 조건문을 넣을수 있다.
#그럼 당연히 a의 값이 바뀌어야 할것이고 거기서 변한 값들이 반복될 떄마다 a는 append된다 
#array=[b for b in range(10) if b > 3]
array=[b for b in range(10) if b > 3]  # else는 쓸수 있지만 elif는 불가능 
print(array)
array=[b for b in range(10) if b > 3 if b<8]  # elif를 못쓰면 if를 한번 더쓰면 되지
print(array)
#0부터 19까지의 수 중에서 홀수만 포함하는 리스트
array = [i for i in range(20) if i % 2 == 0]
print(array)
array=[]
for i in range(20):
    if i % 2 == 0:
        array.append(i)
print(array)
# 1부터 9 까지의 제곱값을 포함하는 리스트
array=[i ** 2 for i in range(1,10)]
print(array)

#2차원 리스트 초기화할때 컴프리헨션 응용
#nXm 크기 2차원 리스트 초기화
n=3
m=4
array=[[0] * m for _ in range(0,n)]  #반복에 변수값이 필요 없을떄 흔히들 _ 를 사용한다
# 컴프리 헨션으로 2차원 리스트를 만든경우 1차원리스트가 각자다른 2차원인덱스에 연결되어 있는구조이다. 
array[1][1]=5 # 잘 만들었는지 확인
print("잘만든 array")
print(array)  # 3*4 

#N X M 크기의 2차원 리스트 초기화 (잘못된 방법)
n=3
m=4
#컴프리헨션을 쓰지 않으면 각자 다른 2차원인덱스들이 똑같은 1차원리스트를 연결한 구조이기 떄문에 
# 한개의 1차원리스트에 값이 바뀌면 다른 2차원인덱스들도 같은 1차원리스트에 연결되어 있기떄문에
# 똑같이 값이 바뀐다.  즉 [1][1]  [2][1] [3][1] 을 같을걸 연결하고 있다.
#http://pythontutor.com/live.html#mode=edit 이사이트 진짜 좋다 한번 가봐라
array=[[0]*m]*n
print("잘못 만든 array")
print(array)
array[2][1]=5
print(array)
#따라서 2차원 리스트를 만들고 싶다면 컴프리헨션을 꼭 이용하자

#주요 메서드들
a=[1,4,3]
print("기본 리스트: ",a)

#리스트에 원소 삽입
a.append(2)
print("삽입: ",a)

#오름차순 정렬
a=[2,3,5,6,5,1,0]
a.sort()
print("오름차순정렬",a)
#내림차순 정렬
a.sort(reverse=True) #자동완성에 reversed 조심
print("내림차순 정렬",a)
#리스트 원소 뒤집기
a=[7,8,675,3,7]
a.reverse()
print("리스트 뒤집기",a)
#특정 인덱스에 데이터 추가


#특정 값인 데이터 개수세기

#특정 값을 가진 원소 데이터 삭제(처음한개만)



0.8999999999999999
False
0.9
True
2
[]
[]
[0, 0, 0, 0, 0, 0, 0, 0, 0]
5
[2, 5]
[4, 5, 6, 7, 8, 9]
[4, 5, 6, 7]
[0, 2, 4, 6, 8, 10, 12, 14, 16, 18]
[0, 2, 4, 6, 8, 10, 12, 14, 16, 18]
[1, 4, 9, 16, 25, 36, 49, 64, 81]
잘만든 array
[[0, 0, 0, 0], [0, 5, 0, 0], [0, 0, 0, 0]]
잘못 만든 array
[[0, 0, 0, 0], [0, 0, 0, 0], [0, 0, 0, 0]]
[[0, 5, 0, 0], [0, 5, 0, 0], [0, 5, 0, 0]]
기본 리스트:  [1, 4, 3]
삽입:  [1, 4, 3, 2]
오름차순정렬 [0, 1, 2, 3, 5, 5, 6]
내림차순 정렬 [6, 5, 5, 3, 2, 1, 0]
리스트 뒤집기 [7, 3, 675, 8, 7]