[Python] Variable, String, List

박현희·2020년 8월 27일
0

Python

목록 보기
4/8

간단한 설명과 예제, 문제 코드를 볼 수 있는 깃헙 링크입니다.

<변수>

변수 할당

  • value = 10
  • 변수할당은 ( = ) 기호를 사용한다.
  • 왼족이 변수의 이름이다.
  • 오른쪽이 변수의 값이다.

Variable naming rules

  • 변수의 시작은 영문자나 언더스코어(_)로만 시작해야 한다.:

    • _salary
    • salary_
  • 변수의 시작 다음에는 숫자나 문자나 언더스코어등 아무거나 와도 상관없다. :

    • salary1
    • salary2018x
    • speed_kph
  • 변수명은, 같은 문자라도 대문자와소문자를 구별하므로, 다른변수로 취급한다.

    • salary, SALARY
    • salary, Salary
    • salary, salarY
  • 변수의 시작은 절대 숫자로 시작할수 없다.

<STRINGS - 문자열>

  • 각각의 하나의 문자들이 나열된 상태, 즉 시퀀스(sequence) 이다.
  • 문자열은, 싱글퀏이나 더블퀏 (single or double quotes)으로 감싸야 한다.
  • 문자열에 다음처럼 작은따옴표가 겹치면, 에러가 난다.
  • 문자열에 큰따옴표가 들어있는 경우에는, 이스케이프 캐릭터 \" 를 이용해서 처리할 수 도 있다.
  • 3개의 단일 부호로 문자열을 만들 수 있다. 특히 줄을 바꿔가면서 긴 문자열 만들때 유용. 참고

주의

  • 문자열은 immutable 이다. 따라서 한번 생성된 문자열 자체를 바꾸는것은 할 수 없다.
  • 따라서, 새로운 메모리에 변경한 문자열을 새로 만드는 방법을 사용하게 된다.

👇🏾문자열을 다루는 함수들 👇🏾

- 더하기 연산 ( + 연산자 ) : 문자열 결합

  • +연산자는, 숫자 뿐만 아니라 문자열에서도 사용이 가능하다.
  • 여러 문자열들을 결합할 수 있다.
  • +연산자 (더하기 연산자) 를 사용하면, 문자열을 옆으로 붙이게 된다. 즉, 문자열을 결합시킨다.
  • 두 개의 문자열을 결합시키는 것도 되고, 여러 개의 문자열을 결합시킬 수도 있다.
  • +연산자를 이용해서 문자열을 붙일 때, 공백을 포함시켜서 결합시키려면, " " 공백 문자열을 중간에 넣어주면 된다.
    강의참고 : 문자열 함수

- 대소문자 처리하는, upper() lower() title() 함수

  • 문자열을 대문자 로 바꿀 수 있는 upper()
  • 문자열을 소문자 로 바꿀 수 있는 lower()
  • 문자열을 단어 앞만 대문자로 바꿀 수 있는 title() 함수도 있다.

- 문자열을 쪼갤 수 있는 split() 함수 - 쪼갠 결과는 list 로 반환된다.

  • 문자열을 공백( " " ) 으로 쪼갤수 있다. 즉, 문자열을 단어들로 분리해 낼 수 있다. split()
  • 문자열을 특정 글자로도 쪼갤 수 있다. 't' 로 쪼개면, 3개의 단어로 분리된다. split('t')
  • 문자열을 특정 문자열로도 쪼갤 수 있다. 'ch'로 쪼개면, 2개의 단어로 분리된다. split('ch')
  • 이메일 주소가 있으면, @로 문자열을 분리해 낼 수 있다. split('@')
  • split() 함수를 통해 나온 결과는, 리스트로 반환된다.

- 문자 한개만 추출하기

  • 인덱스를 이용한다.
  • 순방향, 역방향 이해
letters = 'abcdefghijklmnopqrstuvwxyz'
letters[0]  # "a"
letter[-1]  # "z"

참고

문자열 바꾸기 파이썬 replace() 함수

  • 문자열을 바꿀 수도 있다. 'abc' 를 ' hello '로 바꾼다.
letters = 'abcdefghijklmnopqrstuvwxyz'
new_letter = letters.replace("abc","Hello")
print(new_letter)  # Hellodefghijklmnopqrstuvwxyz
  • 이때, 원본 문자열은 절대 바뀌지 않는다.

문자열의 일부를 추출하기

  • [:] 처음부터 끝까지
  • [start:] start오프셋부터 끝까지
  • [:end] 처음부터 end-1 오프셋까지
  • [start : end] start오프셋부터 end-1 오프셋까지
  • [start : end : step] step만큼 문자를 건너뛰면서, 위와 동일하게 추출
letters = 'abcdefghijklmnopqrstuvwxyz'
letters[0:3]  # 'abc'
letters[-3:]  # 'xyz'
letters[ : : -1] # 'zyxwvutsrqponmlkjihgfedcba'

문자열의 길이 추출하기

  • len() 함수를 사용하여 몇개의 문자로 되어있는지 알 수 있다.
  • 공백포함

    len 함수를 이용해서 문자의 갯수를 파악하는데, 이때 주의할 점은, 공백이 포함되어 있으면, 공백도 하나의 문자로 갯수를 센다. 따라서 ex_str 의 문자 앞과 뒤에 공백이 하나씩 있고, hello와 world 사이에도 공백이 있으므로, 총 13글자가 된다.
ex_str = " hello world "

len(ex_str) # 13

문자열 위치 찾기

  • find 함수는, 찾고자 하는 문자열이 존재하는 곳의 첫번째 오프셋을 알려준다.
  • rfind 함수는, 찾고자 하는 문자열이 있는 마지막 오프셋을 알려준다.
  • 문자열에 없는 문자열을 찾으라고 하면, -1 을 리턴한다.

문자열의 갯수 파악

  • count() 함수는 몇개의 문자열이 있는지 알려준다.

LISTS - 리스트

  • 데이터를 여러 개 저장하는데 사용합니다.
  • 순서가 있습니다. 즉, 인덱스를 가지고 있습니다.
  • 값을 바꿀 수 있습니다. 즉, mutable 이라고 합니다.

참고

리스트 만들기

파이썬 리스트에서 비어있는 리스트, 즉 아무것도 없는 리스트는 아래처럼 두가지 방법으로 생성할 수 있습니다.

  • 대괄호를 사용하는 방법 : [ ]
  • list() 함수를 사용하는 방법
list_one = []
print(list_one)  # []

list_two = list()
print(list_one)  # []

여러 종류의 데이터를, 하나의 리스트에 저장 가능함

list_three = [1,"2","hello",[1,2,3]]

리스트 offset 으로 값을 얻기

  list_three[0]  # 1
  list_three[3]  # [1, 2, 3]
  • 리스트 안에 있는 리스트의 값을 얻기

    list_three[3][1]  # 2
  • offset 으로, 리스트 안에 있는 값을 바꾸기

    list_three[2] = "13"
    list_three  # [1, '2', '13', [1, 2, 3]]

리스트에 항목을 추가하기

  • 리스트 중간에, 원하는 위치(index) 에, 값을 추가하기 insert()
    week = ['Monday', 'Tuesday', 'Wednesday', 'Thursday', 'Friday']
    week.insert(5,"Saturday")
    week  # ['Monday', 'Tuesday', 'Wednesday', 'Thursday', 'Friday', 'Saturday']
    

항목을 삭제하기¶

  • 인덱스를 이용해서, 삭제하기 원하는 위치의 값을 삭제하기 del
    del week[1]
    week  # ['Monday', 'Wednesday', 'Thursday', 'Friday', 'Saturday']
  • 저장되어 있는 값으로 삭제하기 remove()
    week.remove('Monday')
    week  # [ 'Wednesday', 'Thursday', 'Friday', 'Saturday']
  • 항목을 반환하면서, 리스트에서 값을 삭제하기 pop(), pop(index)
    value = week.pop() 
    value  # 'Saturday'
    week  # [ 'Wednesday', 'Thursday', 'Friday']

리스트 + 연산

  • 두개의 리스트를 + (더하기 연산) 을 이용해서, 두개 이상의 리스트를 하나의 리스트로 만들 수 있다.

    fruits = ["apple","banana","pineapple"]
    numbers = [1,2,3]
    
    print(fruits+numbers) # ['apple', 'banana', 'pineapple', 1, 2, 3]

값으로 오프셋 찾기

  • 인덱스 위치를 찾고자 할 때 index()

리스트 안에, 원하는 값이 있는지 확인하기 : in 자료구조

"찾고자하는 값" in "자료구조(리스트)"
True 이면 리스트에 해당 값이 존재하는 것이고, 존재하지 않으면 False 가 리턴된다.

"apple" in fruits # true

찾고자 하는 항목이, 파이썬의 리스트에 몇개나 들어있는지 확인하는 count 함수

fruits = ['Apple', 'Banana', 'Mango', 'Pineapple', 
          'Coconut', 'Orange', 'Strawberry', 'Lemon', 'Mango']
          
fruits.count('Mango')  # 2

리스트의 전체 갯수 세기 : 리스트에 저장된 항목이 전부 몇개인지 확인하는 len() 함수

len(fruits)# 9

항목들을 정렬하기

  • 원래의 리스트 자체는 건들지 않고, 새롭게 정렬한 리스트를 반환하는 경우 : sorted()
  • 원래의 리스트 자체를 정렬해서 변경하는 경우 : sort()
fruits = ['Apple', 'Banana', 'Mango', 'Pineapple', 
          'Coconut', 'Orange', 'Strawberry', 'Lemon', 'Mango']
          
new_fruits = sorted(fruits)
print(fruits)  
# ['Apple', 'Banana', 'Mango', 'Pineapple', 'Coconut', 'Orange', 'Strawberry', 'Lemon', 'Mango']
print(new_fruits)
#['Apple', 'Banana', 'Coconut', 'Lemon', 'Mango', 'Mango', 'Orange', 'Pineapple', 'Strawberry']


fruits.sort()
print(fruits)
#['Apple', 'Banana', 'Coconut', 'Lemon', 'Mango', 'Mango', 'Orange', 'Pineapple', 'Strawberry']

정렬(sorting) 순서 바꾸기, 역순 (내림차순) 정렬하는 reverse 파라미터 사용

num_list = [ 44, 5, 12, 100, 32]

new_num_list = sorted(num_list)
print(num_list)  # [44, 5, 12, 100, 32]
print(new_num_list)  # [5, 12, 32, 44, 100]

new_num_list = sorted(num_list, reverse=True)
print(new_num_list)  # [100, 44, 32, 12, 5]

리스트의 특성과 copy() 함수

fruits = ['Apple', 'Banana', 'Mango', 'Pineapple', 
          'Coconut', 'Orange', 'Strawberry', 'Lemon', 'Mango']
          
my_fruits = fruits # 얕은 복사
my_fruits[0] = 'Guava'
print(my_fruits)
print(fruits)

둘의 결과는 모두 ['Guava', 'Banana', 'Mango', 'Pineapple', 'Coconut', 'Orange', 'Strawberry', 'Lemon', 'Mango'] 가 나온다.
그걸 막기 위해서는 copy() 함수를 사용 해야한다.

my_fruits = fruits.copy()
my_fruits[0] = 'Apple'
print(my_fruits)
print(fruits)

결과는
['Apple', 'Banana', 'Mango', 'Pineapple', 'Coconut', 'Orange', 'Strawberry', 'Lemon', 'Mango']['Guava', 'Banana', 'Mango', 'Pineapple', 'Coconut', 'Orange', 'Strawberry', 'Lemon', 'Mango']

0개의 댓글