튜플과 리스트는 사용법이 완전히 동일하지만 튜플의 요소는 삭제나 변경이 불가능하다.

그렇기에 튜플은 삭제나 변경과 관련된 메소드가 없다.

 

인덱스의 -1은 리스트의 가장 끝을 의미한다.

문자열과 마찬가지로 슬라이싱, +, * 연산이 가능하며 기능이 동일하다.

리스트 요소의 삭제는 remove와 pop함수, 그리고 del을 사용한다.

pop의 인자가 없을시 가장 마지막 요소가 반환되고 삭제됨

a = [1,2,2,4]
a.remove(2) # 가장 먼저 발견되는 값 삭제. 1,2,4
a.pop(2) # 해당 인덱스 값 반환 후 삭제. 1,2

a = [1,2,2,4]
del a[0] # 2,2,4
del a[1:] # 2

 

리스트의 값을 복사하고자 할 때

a = [1,2,3] # id(a) 4303029896
b = a		# id(b) 4303029896

단순히 리스트를 대입시키게 되면 [1, 2, 3] 리스트를 참조하는 변수가 1개에서 2개로 늘어난 것과 마찬가지가 된다.

즉, 얕은 복사가 일어나게 된다.

 

a = [1, 2, 3]
b = a.copy() # 메소드를 이용하거나
b = a[:] # 전체범위에 해당하는 새로운 리스트를 넘겨준다

 

 

리스트 관련 함수들

 

append : 맨 뒤에 요소를 추가시킨다

sort : 기본적으로 오름차순 정렬

reverse : 순서를 뒤집는다

index : 문자열의 index와 같다. 하지만 find는 없다

insert : 리스트에 요소 삽입

a = [1, 2, 3]
a.insert(0,4)
# [4, 1, 2, 3]

count : 리스트 안에 들어있는 인자의 개수를 반환함

extend : 인자로 받은 리스트를 추가시켜 확장시킨다

'프로그래밍 > Python' 카테고리의 다른 글

[자료형] 집합  (0) 2022.07.22
[자료형] 딕셔너리(사전)  (0) 2022.07.22
[자료형] 문자열  (0) 2022.07.22
sort 함수에서 key가 다중조건일때  (0) 2022.07.18
파이썬 문법 메모  (0) 2022.07.14

문자열이 여러줄인 경우 \n을 여러번 포함하는 것보다 " 세개 혹은 ' 세개로 감싸서 직관적으로 작성하는게 나을 수도 있다.

multiline = """
Life is to short
You need python
"""

 

여러개의 문자열들을 + 연산을 통해 하나로 묶어줄 수 있다.

 

문자열에 정수를 곱하면 해당 횟수만큼 반복되어 늘어난다.

 

문자열 슬라이싱

a = "Life is too short, You need Python"
# a[0:4] :: 0 <= a < 4
# 'Life'

start 또는 end를 생략할 수 있는데 그렇게 되면 기본적으로 각각 문자열의 시작점, 끝점이 된다.

 

 

[문자열 포매팅]

print("I ate %d apples. so I was sick for %s days." % (number, day))

%s는 어떤 형태의 값이든 변환해 넣을 수 있다.

%10d, %0.3f 등 포맷코드와 숫자를 혼용해서 사용하는 것은 c/c++ 문법과 같다.

 

"I ate {0} apples. so I was sick for {day} days.".format(10, day=3) # 기본적인 사용

"{0:<10}".format("hi") # 왼쪽 정렬. 오른쪽은 > 가운데는 ^ 사용

"{0:=^10}".format("hi") # 공백 채우기. '====hi====' 와 같이 출력됨

"{0:0.4f}".format(y) # 소수점 표현

f'나의 이름은 {name}입니다. 나이는 {age}입니다.' # f 문자열 포매팅

 

[문자열 관련 함수]

count : 해당 문자(열)이 포함된 값 반환

find, index : 해당 문자(열)이 처음으로 나온 위치 반환. find는 찾지 못하면 -1 반환. index는 오류 발생

join : 각각의 문자 사이에 좌측 문자(열)를 삽입

",".join('abcd')
# 'a,b,c,d'

lower / upper  : 소 / 대문자로 바꾸기

lstrip / rstrip / strip : 좌 / 우 / 양쪽 공백 지우기

replace : 문자열 바꾸기

a = "Life is too short"
a.replace("Life", "Your leg")
# 'Your leg is too short'

split : 문자열 나누기. 나누어진 것들은 리스트로 반환된다.

a = "Life is too short"
a.split()
# ['Life', 'is', 'too', 'short']

'프로그래밍 > Python' 카테고리의 다른 글

[자료형] 집합  (0) 2022.07.22
[자료형] 딕셔너리(사전)  (0) 2022.07.22
[자료형] 리스트 & 튜플  (0) 2022.07.22
sort 함수에서 key가 다중조건일때  (0) 2022.07.18
파이썬 문법 메모  (0) 2022.07.14
n = int(input())

array = []
for i in range(n):
  math, info = map(int, input().split())
  array.append((i+1, math, info))

# 음수는 내림차순. 첫번째 기준으로 같은값이 나오면 두번째 기준. 또 같은값이 나오면 세 번째 기준
array.sort(key = lambda x: (-x[1], -x[2], x[0]))

for x in array:
  print(x[0], x[1], x[2])

 

코드업 문제 3017을 풀다가 막혀서 방법을 찾아보니 역시 있었다.

람다식의 인자가 순차적으로 적용된다

작동 원리를 찾아보고 있는데 잘 안나오는중

'프로그래밍 > Python' 카테고리의 다른 글

[자료형] 집합  (0) 2022.07.22
[자료형] 딕셔너리(사전)  (0) 2022.07.22
[자료형] 리스트 & 튜플  (0) 2022.07.22
[자료형] 문자열  (0) 2022.07.22
파이썬 문법 메모  (0) 2022.07.14

짧은 개념들

파이썬에서 입력은 기본적으로 문자열로 인식된다

우선순위 큐는 from queue import PriorityQueue 로 쓸수 있다

힙은 최소 힙만 제공되기 때문에 내림차순 정렬을 하고싶다면 힙에 데이터를 넣을 때, 부호를 바꿔서 넣고 꺼낼때 다시 부호를 바꿔서 꺼내면 된다

빠르게 입력 받기

더보기
import sys
# 하나의 문자열 데이터 입력받기
input_data = sys.stdin.readline().rstrip()

# 입력받은 문자열 그대로 출력
print(input_data)

입력 데이터의 개수가 많은 문제에 input() 함수를 사용하면 동작 속도가 느려서 시간 초과 판정이 나올수 있어서 sys 라이브러리의 readline() 함수를 이용하는게 좋다. 이후에 rstrip() 함수를 꼭 호출해 주어야 데이터에 공백이 포함되지 않는다

 

리스트

더보기

''.join(리스트)

리스트를 문자열로 변환

 

변수 = []

리스트로 선언

 

리스트.append(변수)

변수를 리스트 가장 뒤에 삽입

 

리스트 컴프리헨션

리스트를 초기화 하는데에 있어서 간결하게 표현하고 조건이나 반복을 할수 있다.

사용 예) d = [[0] * m for _ in range(n)] # 0으로 초기화 된 n*m의 2차원 배열 (정확히는 배열이 아니지만 배열처럼 사용 가능)

 

 

리스트[::-1] / 리스트

전자는 최상단 (가장 나중에 들어온 원소), 후자는 최하단 (가장 먼저 들어온 원소) 부터 접근한다

파이썬에서 리스트는 스택처럼 이용할 수 있다

 

튜플

한번 선언된 값을 변경할 수 없다.

리스트는 대괄호, 튜플은 소괄호를 이용.

 

(), [], {} 의 용도

() = 튜플 / [] = 리스트 / {} = 딕셔너리

 

 

 

A in B

A배열 안에 B요소가 있는지 검사후 True, False를 반환해줌

사용 예) if s in "string"

 

ord(문자)

하나의 문자를 인자로 받고 해당 문자에 해당하는 아스키코드 정수 반환

ord('a')는 97을 반환한다

 

chr(정수)

하나의 정수를 인자로 받고 해당 정수에 해당하는 아스키코드 문자 반환

chr(97)은 a를 반환한다

 

.isalpha()

해당 문자가 한글or영문인지 확인. 문자형 변수에만 사용이 되는 것 같음. 특수문자, 숫자에 대해서는 False 반환

 

.isalnum()

위에서 숫자까지 포함됨

 

.isdigit()

해당 문자/문자열이 숫자로만 이루어져 있는지 판별. 음수/소수점 제외. 숫자처럼 생긴 모든 글자를 숫자로 침

 

.isnumeric()

isdigit와 유사하지만 숫자값 표현에 해당하는 문자열까지 인정한다. 제곱근, 분수, 등등

 

global 변수

함수 밖에서 선언된 경우 함수 안에서는 명시적으로 global을 붙여주고 사용해야 함

함수 밖에서 명시해주어도 함수 내에서 사용시 명시해주지 않으면 지역변수처럼 사용된다

 

print(~~, end=' ')

줄바꿈이 아닌 공백문자를 출력한다

 

print(~~, sep='')

공백을 모두 없애준다

 

변수 = int(input(), 16)

16진수로 입력받는다. 2, 8, 16 가능

 

sum(배열)

배열 안의 수를 모두 합해준다

 

 

[문자열]
index와 find의 차이. find는 값을 못찾으면 -1을 반환. index는 오류를 발생시킴

[사전]
사전에서 배열처럼 직접 접근하는 방법과 get 모두 용도는 동일한데 직접 접근시 값이 없으면 오류가 나옴. get은 None반환
키 삭제는 del

[집합]
순서 없음. 중복허용 안함
선언시 {}로 감싸거나 리스트를 set()으로 감싸면 됨
두개의 집합을 & 연산시 교집합 되는 부분만 남음. 혹은 .intersection
두개의 집합을 | 연산시 합집합이 됨. 혹은 union
두개의 집합을 - 연산시 차집합이 됨. 혹은 difference

add와 remove로 값 추가, 삭제 가능

[함수]
가변인자. 매개변수를 *value같이 앞에 *을 붙여서 받으면 된다. 함수 내에서는 for문으로 접근 가능

[출력포맷]
{} .format 사용시 {}안에 인자들을 채워넣어서 출력포맷을 바꿀수 있다
{0:^<+30,} = 빈자리를 ^로 채우고, < 왼쪽정렬, +부호표시, 총 30자리, 3자리마다 ,를 찍어줌. 필요없는건 제외해도 됨

'프로그래밍 > Python' 카테고리의 다른 글

[자료형] 집합  (0) 2022.07.22
[자료형] 딕셔너리(사전)  (0) 2022.07.22
[자료형] 리스트 & 튜플  (0) 2022.07.22
[자료형] 문자열  (0) 2022.07.22
sort 함수에서 key가 다중조건일때  (0) 2022.07.18

+ Recent posts