JAVA 개발자의 PYTHON 도전기

이 포스트는 개인적으로 공부한 내용을 정리한 글입니다.
자세한 내용은 아래 참고자료를 봐주시면 감사하겠습니다.

기본 문법

List, Tuple 조작하기

list와 Tuple의 조작방법은 거의 같은것 같습니다.
저는 알고있던 내용이라 간단하게 코드만 남기겠습니다.
또한 리스트의 추가 및 삭제와 같은 변경을 제외한 나머지 코드는 tuple에서도 사용 가능합니다. (아마도~)

리스트의 추가, 삭제, 정렬

>>> a = [10, 20]
>>> a.append([50, 60]) # 마지막 인덱스에 추가
>>> a
[10, 20, [50, 60]]

>>> a = [10, 20]
>>> a.extend([50, 60]) # 마지막 인덱스부터 연장
>>> a
[10, 20, 50, 60]
>>> a.remove(20) # 20값을 가진 index 삭제
>>> a.pop() # 마지막 인덱스 삭제 및 해당 값 반환
>>> a.index(50) # 50이라는 값이 있는 인덱스 반환

>>> a = [10, 20, 30, 40, 10, 10, 20, 50]
>>> a.count(10) # 값이 10인 인덱스의 갯수 반환
3
>>> a.reverse()
>>> a
[50, 20, 10, 10, 40, 30, 20, 10]
>>> a.sort(reverse=False) # reverse=False가 default
>>> a
[10, 10, 10, 20, 20, 30, 40, 50]
>>> a.sort(reverse=True)
>>> a
[50, 40, 30, 20, 20, 10, 10, 10]
>>> a.clear()
>>> a
[]
>>> a = [10, 20, 30, 40, 10, 10, 20, 50]
>>> a[len(a):] = [1000]
>>> a
[10, 20, 30, 40, 10, 10, 20, 50, 1000]
>>> a[len(a):] = 1000 # Error 발생
Error
>>> del a[1:3]
>>> a
[10, 40, 10, 10, 20, 50, 1000]
>>> del a[:]
>>> a
[]

할당복사

>>> a = [0,0,0,0,0]
>>> b = a # 참조변수이기에 주소값 공유
>>> a, b
>>> id(a), id(b) # 주소가 같다
>>> b.append('b')
>>> a.append('a')
>>> a, b
>>> a is b # True
>>> a == b # True

>>> a = [0,0,0,0,0]
>>> b = a.copy() # 값이 같은 새로운 객체를 생성
>>> a, b
>>> id(a), id(b) # 주소가 다르다
>>> a == b # True
>>> a is b # False

>>> b.append('b')
>>> a.append('a')
>>> a, b

List의 연산

>>> a = [10, 20, 30]
>>> b = [1, 2, 3]
>>> c = a + b
>>> c # extend와 같다.
[10, 20, 30, 1, 2, 3]
>>> a = [1, 2, 3]
>>> b = a * 3
>>> b # n번 반복, 0이나 음수를 곱하면 빈 배열이 나온다
[1, 2, 3, 1, 2, 3, 1, 2, 3]

List의 활용(가장 작은 수, 가장 큰 수 구하기)

# 배열의 가장 작은 수 찾기
a = [456, 4, 123, 45, 78, 45, 784, 54, 265847, 45, 487, 12135]
smallest = a[0]
for i in a:
    if smallest > i:
        smallest = i
smallest

## sort 사용
a = [456, 4, 123, 45, 78, 45, 784, 54, 265847, 45, 487, 12135]
a.sort()
a[0] # 가장 작은 수
a.sort(reverse=True)
a[0] # 가장 큰 수

## min, max 함수 사용
min(a)
max(a)

List의 활용(리스트의 합 구하기)

# 요소의 합
>>> a = [456, 4, 123, 45, 78, 45, 784, 54, 265847, 45, 487, 12135]
>>> x = 0
>>> for i in a:
...     x += i
>>> x
280103
## sum 사용
>>> sum(a)
280103

>>> a = ["string", "int", "float"]
>>> sum(a)
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
TypeError: unsupported operand type(s) for +: 'int' and 'str'
>>> max(a) # 알파벳 순서로 가장 큰 요소
'string'
>>> min(a) # 알파벳 순서로 가장 작은 요소
'float'

List comprehension

  • 필자가 python에서 가장 마음에 들었던 부분이다.
# List comprehension
a = [i for i in range(0, 10) if i % 2 == 0]
a
a = [i + 6 for i in range(2, 19, 2) if i < 15] # 2이상 19 미만의 2씩 늘어나는 배열을 만드는데 15 미만이여야하며 6을 더한다
a
# List comprehension을 사용하여 구구단 만들기
a = [i * j for i in range(2, 10) for j in range(1, 10)]
a
# 위의 구구단을 for문으로 만들어 string으로 변경하려고 한다.
a = []
for i in range(1, 10):
    for j in range(2, 10):
        a.append(str(i * j))

a
# 아래와 같이 map을 사용하면 쉽게 변환할 수 있다.
b = list(map(int, a))
b

b = list(map(float, b))
b

map()

  • map()은 map object로 반환되기때문에 list(map())으로 감싸서 사용하면 된다.
# input으로 받은 숫자를 쉽게 변환할 수 있다.
# a = int(input("숫자를 여러개 입력해주세요: ").split()) # 에러발생함
a = map(int, input("숫자를 여러개 입력해주세요: ").split())
a # <map object at 0x0000017D1A5B59C0>
list(a) # [2, 3, 5, 1, 2312]

input map 활용

# 입력받은 문자열 형태의 숫자를 int로 변경하여 각 변수에 바로 할당하기
a, b, c = map(int, input("숫자를 3개 입력하세요: ").split())
a
b
c

연습문제

>>> a = ['alpha', 'bravo', 'charlie', 'delta', 'echo', 'foxtrot', 'golf', 'hotel', 'india']
>>> b = [i for i in a if len(i) == 5] # 리스트 a에서 하나씩 가져오는데, 문자열 길이가 5인 요소만 가져온다
>>> b
['alpha', 'bravo', 'delta', 'hotel', 'india']

참고자료 (파이썬 코딩 도장 - Unit 20. 리스트와 튜플 응용하기)

profile
백엔드 프로그래머

0개의 댓글