Open SHEWANTSME opened 2 years ago
About LIst
a = [1,2,3,4,5,6,7,8,9]
print (a)
print (a[3])
n = 10
a = [0] *n # 크기 n 모든값이 0 인 리스트로 초기화
print (a)
[1, 2, 3, 4, 5, 6, 7, 8, 9] 4 [0, 0, 0, 0, 0, 0, 0, 0, 0, 0]
a = [1,2,3,4,5,6,7,8,9]
print (a)
print (a[3])
n = 10
a = [0] *n # 크기 n 모든값이 0 인 리스트로 초기화
print (a)
[1, 2, 3, 4, 5, 6, 7, 8, 9] 4 [0, 0, 0, 0, 0, 0, 0, 0, 0, 0]
# list indexing
a = [1,2,4,5,6,7,8,9]
print (a[7]) # 8번쨰 원소
print(a[-1]) # 맨뒤원소
print (a[-3]) # 뒤에서 세번쨰원소
9 9 7
#list slicing
print(a[0:8]) #처음껀 포함 나중껀 안포함
print(a[2:7])
[1, 2, 4, 5, 6, 7, 8, 9] [4, 5, 6, 7, 8]
#list comprehension
array = [i for i in range(10)]
# i 라는 변수가 0부터 10까지 차례대로 반복할 수 있도록 하되,
# 이떄 i라는 변수값이 차례대로 리스트의 원소로 들어오게 만듬!
#
그니까 다른언어에서
for(int i = 0; i<10 ; i++)
arr[i] = i;
#이게 저거랑 같은말임
print (array)
그니까 python에서
array = [i for i in range(10)]
은
for(int i =0; i<10 ; i++)
arr[i] = i;
랑 같은말임!
print (array) 하면 [0, 1, 2, 3, 4, 5, 6, 7, 8, 9] 겠지? 만약 1~10까지 하고싶으면 그냥
array = [i+1 for i in range(10)] 하면 그만!
array = [i for i in range(20) if i%2==1]
print(array)
# 0부터 19까지 홀수만 포함하는 리스트 출력
--> [1,3,5,7,9,11,13,15,17,19]
array = [i*i for i in range(1,10)]
# 1부터 9까지 수들의 제곱값을 포함하는 리스트 출력
--> [1,4,9,16,25,36,49,64,81]
array = [i for i in range(10) if i&1]
print(array)
이거랑
array = []
for i in range(10):
if i %2==1:
array.append(i)
print(array)
이거랑 같은거임!!
[1,3,5,7,9]
array = [[0]*m for _ in range(n)]
반복을 위한 변수 noneed할때 for _ in range
--> arr = [[0]*m while range(n)] 이게 될줄 알았는데 안되더라고 ㅋㅋ
# n번 반복될때마다 [0]*m이 초기화되니까 n*m 배열 초기화지
# 저기서 왜 for 다음에 변수가 없냐면
# list comprehension에서 변수가 필요없는 상황이라서그럼
아 참고로
arr = [[0]*m] *n 이러면 안됨,, 이러면 [1][1] 원소 가3이라 할때 [0][1]부터[n][1]까지 다 같은3이 됨
arr.append(4) -> 뒤에 4 삽입 -> O(1)
arr.sort() -> 기본 오름차순 정렬 -> O(nlogn)
arr.sort(reverse = True) -> 내림차순
//참고로 c++은 sort(arr, arr+n, greater
이 밑에는 다 O(N) arr.reverse() -> 순서 뒤집어둠 // c++은 그냥 reverse(a.begin(),a.end()) 이렇게 이터레이터사용 arr.insert( 삽입할 위치 인덱스 , 삽입할 값) arr.count(특정값) -> 특정값 몇개있는지 카운트 arr.remove(특정값)-> 특정값원소 제거 ( 특정값 여러개면 하나만 제거)
ex)
array = [i for i in range(10) if i%2!=0]
print (array)
array.append(3)
print(array)
array.sort(reverse = True)
print(array)
array.reverse()
print(array)
array.insert(1,100)
print(array)
print(array.count(3))
array.remove(3)
print(array)
[1, 3, 5, 7, 9] [1, 3, 5, 7, 9, 3] [9, 7, 5, 3, 3, 1] [1, 3, 3, 5, 7, 9] [1, 100, 3, 3, 5, 7, 9] 2 [1, 100, 3, 5, 7, 9]
set을 이용한 특정원소 제거
alpha = [1,2,3,4,5,5,5]
remove_set = {3,5}
result = [i for i in alpha if i not in remove_set]
print(result)
-> 그러면 alpha = [1,2,4] 만 나옴!
alpha = "abcdef"
print(alpha[2:]) # cdef
print(alpha[2:-1]) #cde
print (alpha[2:4]) # cd
Tuple! -> [] 대괄호 아니고 () 소괄호 어지간한건 같은데
a = (1,2,3,4)
a[2] = 3 -> 이렇게 원소 바꾸는건 안됨
보통 튜플은 -> Hash의 key값으로 사용됨 (변경이 안되서 key값 ㄱㄴ) Memory 효율적
data = dict() -> hash쓸때 dict()씀
data['사과'] = 'Apple'
data['바나나'] = 'Banana'
data['코코넛'] = 'Coconut'
print(data)
if '사과' in data:
print("'사과'를 키로 가지는 데이터가 존재합니다")
data = dict()
data['사과'] = 'Apple'
data['바나나'] = 'Banana'
data['코코넛'] = 'Coconut'
# 키 데이터만 담은 리스트
key_list = data.keys()
# 값 데이터만 담은 리스트
value_list = data.values()
print(key_list)
print(value_list)
# 각 키에 따른 값을 하나씩 출력
for key in key_list:
print(data[key])
결과 : dict_keys(['사과', '바나나', '코코넛']) dict_values(['Apple', 'Banana', 'Coconut']) Apple Banana Coconut
-> 알아서 중복 거름! -> 그리고 집합으로 만들어줌!
# 집합 자료형 초기화 방법 1
data = set([1, 1, 2, 3, 4, 4, 5])
print(data) -> 리스트에서 set으로 변경하거나 ( 중복제거해줌)
# 집합 자료형 초기화 방법 2
data = {1, 1, 2, 3, 4, 4, 5} -> 걍 애초에 {} 써서 하던가
print(data)
{1, 2, 3, 4, 5} {1, 2, 3, 4, 5}
a = set([1, 2, 3, 4, 5])
b = set([3, 4, 5, 6, 7])
# 합집합
print(a | b) -> {1,2,3,4,5,6,7}
# 교집합
print(a & b) -> {3.4.5}
# 차집합
print(a - b) -> {1,2}
아 그리고
alpha = {3,4,5}
print(alpha)
alpha.add(6) -> 1개만 add
print (alpha)
alpha.update({7,8,9}) -> 여려개는 update -> 얘로 그냥 다 써도 무방,,, (add 왜쓰는거임)
# alpha.update({6}) 해도 됨
print (alpha)
alpha.remove(9)
print(alpha)
nn = int(input())
data = input().split()
# 입력받은걸 문자열 리스트로 나타냄 ['3' , '43'] 이런식으로
data = map(int ,input().split())
# 입력받은걸 문자열로 나타낸 애들을 int로 바꿔줌 근데 이 상태는 리스트가 아니라서 3 , 43 이런식으로
# 다시 리스트로 받아줘야함
data = list(map(int, input().split()))
# 이렇게 하면 최종적으로 list가 int형으로 공백기준 값 담김 [3, 43] 이렇게
# 굳이 리스트로 안만들고 개수가 정해져있는 input이면
pp,oo,ii = map(int ,input().split())
print(pp,oo,ii) # 이렇게 써도 됨
import sys --> for the fast 입출력!! java의 bufferedreader같은거
dattta = sys.stdin.readline().rstrip()
print(dattta)
# 줄바꿈 안하고 싶으면 print (alpha, end = " " ) 이게 cout << alpha<< " "; 과 같은거
a = 10
def func():
a+=1
print(a)
func()
이러면 에러뜸 ( 다른 언어들이랑 다르게 전역변수를 참조를 안함 함수안에서)
그래서 이렇게 해줘야함
a = 10
def func():
global a # 전역변수 a를 참조한다
a+=1
print(a)
func()
이렇게 해주자~!
나머지는 필요하면 보고,, 아직은 그닥인듯?
문법 1강.
/ ABOUT INTEGER 1000 -1 0 /
-> 소문자 e,E를 이용한 지수표현 방식 1e9 = 1,000,000,000 최단경로 알고리즘 -> INF 라고 보통 변수 많이 둠 = 1e9(임의의 큰수)
c++ 은
python은
자료형에 ()가 아니고, 숫자에 ()씌어줌
이럴때 사용하는 함수가 round 함수임 ( 내장함수)
몫이 // 거듭제곱이 인 점, 루트는 a 0,5 하면 되는게 개신기하넹