목록프로그래밍 언어/Python (12)
하다보니
함수에 배열을 전달할 때 배열을 구성하는 요소들이 모두 복사되어 전달되는 것이 아니라 배열의 값들을 가리키는 주소만 전달된다는 것을 알 수 있다. 함수 내에서 전달받은 배열에 새로운 값을 추가하면 함수 밖의 원래 배열에도 추가가 된다. 함수 내에서 새로운 배열을 할당하면 다른 배열을 가리키게 되면서 변수가 가리키는 주소가 달라져서 함수 내에서 아무리 변경해도 함수 밖의 원래 배열에 영향을 끼치지 못한다. 함수 인수 전달 방식 Call by Value 함수에 인수를 전달하는 방식. 변수의 값을 복사해 함수의 인자로 전달한다. 따라서 함수 내에서 전달된 인자를 조작해도 함수 외부의 변수에는 영향을 미치지 않는다. Call by Reference 함수에 인수를 전달하는 방식 포인터로 함수의 인자에 전달하는 방..
functools 내장 모듈의 reduce() 함수는 여러 개의 데이터를 대상으로 주로 누적 집계를 내기 위해 사용됩니다. 기본적으로 초기값을 기준으로 데이터를 루프 돌면서 누적하는 방식으로 작동합니다. reduce(집계 함수, 순회할 데이터, 초기값) 여기서 집계 함수는 두 개의 인자를 받아야 한다. 첫번째 인자는 누적자, 두번째 인자는 현재값이 넘어오게 된다. 누적자는 함수 실행의 시작부터 끝까지 재사용되는 값이고, 현재값은 루프를 돌면서 계속 바뀌는 값이다. from functools import reduce arr=[1,2,3,4,5,6,7,8,9] sum=reduce(lambda x,y:x+y,arr,0)
- 딕셔너리의 키, 값 쌍 얻기 items() 딕셔너리는 items() 함수를 통해 딕셔너리에 있는 키와 값들의 쌍을 얻을 수 있다. keys(), values()로 각각 키와 값을 가져올 수 있다. a={'a':1,'b':2,'c':3} print(a.keys())//dict_keys(['a', 'b', 'c']) 이것을 리스트로 가져오고 싶다면 list()로 감싸줘야함 a={'a':1,'b':2,'c':3} print(a.values())//dict_values([1, 2, 3]) 얘도 keys와 마찬가지 print(a.items())//dict_items([('a', 1), ('b', 2), ('c', 3)]) - 딕셔너리 정렬 https://ddolcat.tistory.com/677
- 문자열 일정 길이로 자르기 seq='abcdefgh' length=2 seq=[seq[i:i+length] for i in range(0,len(seq),length)] seq=[''.join(x) for x in zip(*[list(seq[z::length])] - 10진법 ->n진법 변환 def convert(n, base): T = "0123456789ABCDEF" q, r = divmod(n, base) if q == 0: return T[r] else: return convert(q, base) + T[r]
1. set s={} s=set() s = {3, 5, 7} //set 의 in 2 in s //set의 원소 추가 k={100,105} k.add(50) //set의 update - 여러 데이터를 한번에 추가할 때 사용 k={1,2,3} k.update([3,4,5])//{1,2,3,4,5} //set의 원소 제거-remove(item) item에 해당하는 원소를 제거하고 없으면 에러 발생 k={1,2,3} k.remove(3) k//{1,2} //set 원소 제거-discard(item) item에 해당하는 원소를 제거하고 없어도 에러를 발생하지 않음. k = {1, 2, 3} k.discard(3)
파이썬의 내장 자료구조인 dictionary를 사용하다보면 어떤 키에 대한 값이 없는 경우에 대한 처리를 해야하는 경우가 자주 발생한다. 이러한 경우 일반적으로 어떻게 처리하는지 살펴보고 관련한 해결 방법을 알아보도록 하자. 1. dic.setdefault 파이썬의 딕셔너리는 setdefault 함수를 제공한다. 첫번째 인자로 key값, 두번째 인자로 기본값을 넘기면 된다. def countLetters(word): counter = {} for letter in word: counter.setdefault(letter, 0) counter[letter] += 1 return counter 하지만 for 루프 내에서 setdefault 함수가 무조건적으로 항상 호출되는 부분이 좀 별로다. 더 나은 방법...
파이썬에서 리스트에 있는 값들의 모든 조합을 구하기 위해서는 여러 방법이 있다. 파이썬 기본 라이브러리인 itertools를 사용하면 쉽게 구할 수 있다. from itertools import product from itertools import permutations from itertools import combinations - 하나의 리스트에서 모든 조합을 계산해야 한다면 permutations, combinations를 사용. - 두개 이상의 리스트에서 모든 조합을 계산해야 한다면 product를 사용. //순열 - 순서가 있음 items=['1','2','3','4','5'] from itertools import permutations list(permutations(items,2)) //..
ord(문자)는 문자를 숫자로 바꿔주는 함수이므로 알파벳 a의 아스키코드인 97을 빼주어 배열의 index와 맞춰준다. chr() 함수는 아스키코드 값을 문자로 변환해주는 함수이다. ex) chr(97) = 'a' ord('a') = 97 참고 문제) 백준 10808번
deque.append(item): item을 데크의 오른쪽 끝에 삽입한다. deque.appendleft(item): item을 데크의 왼쪽 끝에 삽입한다. deque.pop(): 데크의 오른쪽 끝 엘리먼트를 가져오는 동시에 데크에서 삭제한다. deque.popleft(): 데크의 왼쪽 끝 엘리먼트를 가져오는 동시에 데크에서 삭제한다. deque.extend(array): 주어진 배열(array)을 순환하면서 데크의 오른쪽에 추가한다. deque.extendleft(array): 주어진 배열(array)을 순환하면서 데크의 왼쪽에 추가한다. deque.remove(item): item을 데크에서 찾아 삭제한다. deque.rotate(num): 데크를 num만큼 회전한다(양수면 오른쪽, 음수면 왼쪽).
1. 다음과 같은 형태로 집합을 표현한다. s1=set({1,2,3}) s2=set([1,2,3]) s3={1,2,3} s4=set() 2. 집합의 특징 set()키워드 혹은 중괄호를 사용한다. 빈 중괄호({})는 빈 딕셔너리를 말하는 것이니 주의하자. 고유한 값을 가진다. 값 중복 불가. mutable(값이 변하는)객체이다. 순서가 없기 때문에 인덱싱이 불가하다. 3. 집합 연산 교집합 : s1.intersection(s2) 또는 & 합집합 : s1.union(s2) 또는 | 차집합 : s1.difference(s2) 또는 s1-s2 집합이 같은지 ==로 판별 집합이 아예 다른지 s1.isdisjoint(s2) =>교집합이 없다. 4. 원소 추가, 삭제 원하는 값 추가 : 집합.add() ex)s.ad..