초보 개발자

몰랐던 것들 (문자열 인덱싱, 슬라이싱, endswith, startswith,del ,remove, sum, min, max, join, dict ) 본문

Python/이것 저것

몰랐던 것들 (문자열 인덱싱, 슬라이싱, endswith, startswith,del ,remove, sum, min, max, join, dict )

taehyeki 2021. 12. 15. 11:06

 

# 028 문자열은 immutable
# 아래 코드의 실행 결과를 예상해보세요.
#
# >> lang = 'python'
# >> lang[0] = 'P'
# >> print(lang)

"⭐⭐⭐"
"문자열 수정안됨 !!" \
"c언어에서는 됐었찌 아마"

lang의 0번째 인덱스에 있는 p를 P로 강제로 바꿔주는 것인데 이렇게 해주면 오류가 난다.

C언어에서는 되었던 것 같아 P로 바뀐다고 생각했었는데 안된다.

 

# 023 문자열 인덱싱
# 아래의 문자열에서 '홀' 만 출력하세요.
#
# >> string = "홀짝홀짝홀짝"
# 실행 예:
# 홀홀홀

string = "홀짝홀짝홀짝"
print(string[::2])

[::2]는0번째부터 끝까지 그리고 2칸씩 띄워서 표기(첫 포함)

0 1 2 3 4 5  

 

# 024 문자열 슬라이싱
# 문자열을 거꾸로 뒤집어 출력하세요.
#
# >> string = "PYTHON"
# 실행 예:
# NOHTYP

"⭐⭐⭐"
string = "PYTHON"
print(string[::-1])

[::-1]도 마찬가지로 0번째부터 끝까지 그리고 뒤에서 하나씩이니까

거꾸로 표기가 가능하다.

 

capitalize() 메써드

문자열의 첫글자는 대문자로, 나머지는 소문자로 변환한다.

>>> int_list = [1, 2, 3, 4, 5, 6, 7]
>>> str_list = ['가','나','다','라','마']

>>> del int_list[0]  # 한개의 요소를 삭제
>>> print(int_list)
[2, 3, 4, 5, 6, 7]

>>> del str_list[3:]  # 여러개의 요소를 삭제
>>> print(str_list)
['가', '나', '다']​

 

print ( 'hello world!'.capitalize() ) # Hello world!
print ( 'HELLO WORLD!'.capitalize() ) # Hello world!

 

endswith

# 044 endswith 메서드
# 파일 이름이 문자열로 저장되어 있을 때 endswith 메서드를 사용해서 파일 이름이 'xlsx'로 끝나는지 확인해보세요.
#
# file_name = "보고서.xlsx"

file_name = "보고서.xlsx"
a = file_name.endswith('xlsx')
print(a)

endswith는 ('str','start','end') 3개의 인자를 넣어줄 수 있다. end는 + 1을 해줘야 실제로 포함이 된다.

start와 end를 넣어주지 않으면 처음부터 끝까지 기준이다.

만약 'xlsx' 또는 'xls'로 끝나는 것을 알고 싶을 경우에는

file_name.endswith(("xlsx", "xls"))

이렇게 튜플로 적어주면 가능하다. 

startswith또한 사용법은 마찬가지이다. 이 경우에는 앞에서 시작하는 걸 찾을 때 사용한다.

 

 

del 

list에서 삭제를 할 때는 del과 remove가 있다 쉽게 말해서 del은 인덱스를 사용하여지우는 것이고

remove는 값을 이용하여 지우는 것이다

>>> int_list = [1, 2, 3, 4, 5, 6, 7]
>>> str_list = ['가','나','다','라','마']

>>> del int_list[0]  # 한개의 요소를 삭제
>>> print(int_list)
[2, 3, 4, 5, 6, 7]

>>> del str_list[3:]  # 여러개의 요소를 삭제
>>> print(str_list)
['가', '나', '다']

 

>>> numbers = [1, 2, 2, 3, 3, 3]  # 숫자 3이 3개인 리스트
>>> numbers.remove(3)
>>> print(numbers)
[1, 2, 2, 3, 3]  # 숫자 3이 2개로 줄어들었음

단, array 안에서 삭제하고자 하는 값이 여러 개가 있다 하더라도 첫 번째 값에 대해서만 삭제한다.

remove 함수를 사용하여 모든 값을 삭제할 때는 for문을 이용할 수도 있다.

 

nums = [1, 2, 3, 4, 5, 6, 7]
a = max(nums)
b = min(nums)
print(a)
print(b)

리스트에서 max min값을 구할 수 있다.

nums = [1, 2, 3, 4, 5]
print(sum(nums))

sum을 사용하여 리스트의 합을 구할 수도 있다.

 

평균을 구하는 함수는 없는 것 같다. sum() / len() 으로 구해주어야 한다.

 

join

'구분자'.join(리스트)

구분자에는 리스트에서 문자열로 변환할 때 사이 사이 마다 넣어줄 글자를 의미하는 것이다.

"''.join(리스트)
''.join(리스트)를 이용하면 매개변수로 들어온 ['a', 'b', 'c'] 이런 식의 리스트를 'abc'의 문자열로 합쳐서 반환,

'_'.join(['a', 'b', 'c']) 라 하면 "a_b_c" 와 같은 형태로 문자열을 만들어서 반환해 준다.

 

sort sorted

sort 함수는 리스트명.sort( ) 형식으로 "리스트형의 메소드"이며 리스트 원본값을 직접 수정합하고 sorted 함수는 sorted( 리스트명 ) 형식으로 "내장 함수"이며 리스트 원본 값은 그대로이고 정렬 값을 반환한다.

sort의 return None 이고 원본이 직접 바뀐다.

sorted의 return원본을 복제하여 정렬한 것이고 원본은 안바뀐다.

 

a1 = [6, 3, 9] 
a2 = a1.sort() # 원본을 정렬한다 즉 원형이 바뀐다. 그리고 return 값은 None이다.
print('-----정렬 후-----')
print('a1:', a1) # [3,6,9]
print('a2:', a2) # None

 




튜플 언팩킹 

17. 파이썬 튜플 언패킹하기 - Codetorial

 

17. 파이썬 튜플 언패킹하기 - Codetorial

예제6 # Unpacking 5 a, b, *c, d = (1, 2, 3, 4, 5, 6) print(a) print(b) print(c) print(d) a는 1, b는 2, d는 6이 할당되고, c에는 나머지 값들의 리스트인 [3, 4, 5]가 할당됩니다.

codetorial.net

 

dict로 딕셔너리 만들기

dict는 다음과 같이 키와 값을 연결하거나, 리스트, 튜플, 딕셔너리로 딕셔너리를 만들 때 사용한다.

  • 딕셔너리 = dict(키1=값1, 키2=값2)
  • 딕셔너리 = dict(zip([키1, 키2], [값1, 값2]))
  • 딕셔너리 = dict([(키1, 값1), (키2, 값2)])
  • 딕셔너리 = dict({키1: 값1, 키2: 값2})

먼저 다음과 같이 dict에서 키=값 형식으로 딕셔너리를 만들 수 있고 이때는 키에 ' '(작은따옴표)나 " "(큰따옴표)를 사용하지 않아야 한다. 자동으로 키는 딕셔너리를 만들고 나면 문자열로 바뀐다.