티스토리 뷰

728x90
반응형

 

문자열 슬라이싱

 

기본형태

a[start:end:step]

start : 슬라이싱을 시작할 시작위치

end : 슬라이싱을 끝낼 위치로 end는 포함하지 않는다.

step : 보폭, 옵션이다.

 

a = ['a', 'b', 'c', 'd', 'e']

// Index References
-------------------------------
|  a  |  b  |  c  |  d  |  e  |
-------------------------------
|  0  |  1  |  2  |  3  |  4  |          // 양수의 경우
-------------------------------
| -5  | -4  | -3  | -2  | -1  |          // 음수의 경우
-------------------------------

 

 

리스트(list)

 

순서가 있는, 다른 자료형들의 모임

자바의 배열과 리스트를 합쳐놓은 느낌이다?

 

덧붙이기

a = [1, 2, 3]
a.append(5)
print(a)     # [1, 2, 3, 5]

a.append([1, 2])
print(a)     # [1, 2, 3, 5, [1, 2]]


# 더하기 연산과 비교!
a += [2, 7]
print(a)     # [1, 2, 3, 5, [1, 2], 2, 7]

 

정렬하기

a = [2, 5, 3]
a.sort()
print(a)   # [2, 3, 5]
a.sort(reverse=True)
print(a)   # [5, 3, 2]

 

요소가 리스트 안에 있는지 알아보기

a = [2, 1, 4, "2", 6]
print(1 in a)      # True
print("1" in a)    # False
print(0 not in a)  # True

 

 

딕셔너리 (dictionary)

 

딕셔너리는 key, value의 쌍으로 이루어진 자료의 모임이다.

자바의 해시느낌이다?

person = {"name":"Bob", "age": 21}
print(person["name"])

# 빈 딕셔너리 만들기
a = {}
a = dict()

딕셔너리의 요소에는 순서가 없기 때문에 인덱싱을 사용할 수 없다.

person = {"name":"Bob", "age": 21}
print(person[0])   # 0이라는 key가 없으므로 KeyError 발생!

딕셔너리의 값을 업데이트하거나 새로운 쌍의 자료를 넣을 수 있다.

person = {"name":"Bob", "age": 21}

person["name"] = "Robert"
print(person)  # {'name': 'Robert', 'age': 21}

person["height"] = 174.8
print(person)  # {'name': 'Robert', 'age': 21, 'height': 174.8}

딕셔너리의 value로는 아무 자료형이나 쓸 수 있다.

person = {"name":"Alice", "age": 16, "scores": {"math": 81, "science": 92, "Korean": 84}}
print(person["scores"])             # {'math': 81, 'science': 92, 'Korean': 84}
print(person["scores"]["science"])  # 92

딕셔너리 안에 해당 키가 존재하는지 알고 싶을때는 in을 사용한다.

person = {"name":"Bob", "age": 21}

print("name" in person)       # True
print("email" in person)      # False
print("phone" not in person)  # True

리스트 + 딕셔너리의 조합

people = [{'name': 'bob', 'age': 20}, {'name': 'carry', 'age': 38}]

# people[0]['name']의 값은? 'bob'
# people[1]['name']의 값은? 'carry'

person = {'name': 'john', 'age': 7}
people.append(person)

# people의 값은? [{'name':'bob','age':20}, {'name':'carry','age':38}, {'name':'john','age':7}]
# people[2]['name']의 값은? 'john'

 

 

튜플 (tuple)

 

튜플은 리스트와 비슷하지만 불변인 자료형이다. 마찬가지로 순서가 존재한다.

a = (1,2,3)

print(a[0])

예를 들어 아래와 같은 작업이 불가능하다.

a = (1,2,3)
a[0] = 99

딕셔너리 대신 리스트와 튜플로 딕셔너리 비슷하게 만들어 사용할때 많이 사용한다.

a_dict = [('bob','24'),('john','29'),('smith','30')]

 

 

집합 (set)

 

집합은 중복을 허용하지 않고 순서가 없다는 것이 특징이다.

a = [1,2,3,4,5,3,4,2,1,2,4,2,3,1,4,1,5,1]

a_set = set(a)

print(a_set) # {1, 2, 3, 4, 5}

교집합/합집합/차집합도 사용할 수 있다.

s1 = set([1, 2, 3, 4, 5, 6])
s2 = set([4, 5, 6, 7, 8, 9])

print(s1 & s2) # {4, 5, 6}
print(s1 | s2) # {1, 2, 3, 4, 5, 6, 7, 8, 9}
print(s1 - s2) # {1, 2, 3}
print(s2 - s1) # {8, 9, 7}

값 추가하기

s1 = set([1, 2, 3])
s1.add(4) # 1개 추가하기
print(s1) # {1, 2, 3, 4}

s1.update([4, 5, 6]) # 여러개 추가하기
print(s1) # {1, 2, 3, 4, 5, 6}

 

 

f-string

 

python 3.6부터 지원되는 기능으로 문자열을 출력할때 훨씬 보기 편하게 만들어준다.

scores = [
    {'name':'영수','score':70},
    {'name':'영희','score':65},
    {'name':'기찬','score':75},
    {'name':'희수','score':23},
    {'name':'서경','score':99},
    {'name':'미주','score':100},
    {'name':'병태','score':32}    
]

for s in scores:
    name = s['name']
    score = str(s['score'])
    print(name+'는 '+score+'점 입니다')
    

# 위 코드를 f-string을 사용하면

for s in scores:
    name = s['name']
    score = str(s['score'])
    print(f'{name}은 {score}점입니다')

앞에 f를 붙이고 {변수명}형태로 작성하면 된다.

 

 

if문

 

기존 if문

num = 3

if num%2 == 0:
    result = "짝수"
else:
    result = "홀수"

print(f"{num}은 {result}입니다.")

삼항연산자 if

num = 3

result = "짝수" if num%2 == 0 else "홀수"

print(f"{num}은 {result}입니다.")

(참일때 값) if (조건) else (거짓일 때 값) 으로 항이 3개라 삼항 연산자 이다.

 

 

for문

 

for in range() 함수

순회할 횟수가 정해져 있을때 사용

for i in range(5):
	print(i) # 0,1,2,3,4

enumerate 함수

리스트가 있는 경우 순서와 리스트의 값을 전달하는 기능

for i, name in enumerate(['body', 'foo', 'bar']):
	print(i, name)

# 0 body
# 1 foo
# 2 bar

기존 for문

a_list  = [1, 3, 2, 5, 1, 2]

b_list = []
for a in a_list:
    b_list.append(a*2)

print(b_list)

한줄 for문

a_list  = [1, 3, 2, 5, 1, 2]

b_list = [a*2 for a in a_list]

print(b_list)

 

 

반응형
댓글
공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크
«   2024/11   »
1 2
3 4 5 6 7 8 9
10 11 12 13 14 15 16
17 18 19 20 21 22 23
24 25 26 27 28 29 30