본문 바로가기

Python/Python

[Python공부] 12.19 - 1일차_몰랐던 기본문법

반응형

1. + 를 이용해서 문자열을 결합 가능

2. * 를 이용해 문자열 복제가능 ex) 'a man ' *3  하면 a man a man a man 출력

3. 문자열은 불변하기 때문에 해당 인덱스 번호에 새로운 문자를 할당할 수 없음! -> 대신 replace함수사용 

4. 슬라이스 

   ㄱ. [ : ] 처음부터 끝까지 시퀀스 출력

   ㄴ. [start : ] start부터 끝까지 시퀀스 출력

   ㄷ. [ : end ] 처음부터 end-1 까지 시퀀스 출력

   ㄹ. [start : end ] start부터 end-1 까지 시퀀스 출력

   ㅁ. [start : end : step ] start부터 end-1까지 step만큼 문자를 건너뛰면서 출력

5. split 함수 ->  변수명.split('구분기준') 으로 나눔 만약 '구분기준' 생략시 공백기준으로 쪼개서 리스트로 출력! []

6. join 함수(문자열 결합!) -> 문자열리스트를 하나의 문자열로 결합함. string = ' , ' .join(리스트) ,를 기준으로 모두 결합시켜라!

7.  .find( ) 첫번째로 해당문자열이 나오는 오프셋은?

    .rfind() 마지막으로 해당문자열이 나오는 오프셋은?

    .count() 해당 문자가 몇번 나오나

    .isalnum() 해당 문자열들이 글자와 숫자로만 이루어졌는가?(T/F반환)

    .strip(' ') 해당문자를 삭제

    .captalize() 첫번째 문자를 대문자로 만들어

    .title() 모든 단어의 첫 글자를 대문자로 만들어

    .upper() 모든 글자를 모두 대문자로 만들어

    .lower() 모든 글자를 모두 소문자로 만들어

    .swapcase() 대문자는 소문자로, 소문자는 대문자로 만들어

    .replace('바꿀대상문자', '바꿀문자', 바꿀횟수(몇회바꿔) ) 

 

<리스트와 튜플>

튜플()은 불변함 vs 리스트[]는 변경 가능(내용의 순서 변경 가능/ 동일한 값 여러개 갖기 가능)

1.리스트... 이중리스트 all_birds[1][0] : 이중리스트 1번 인덱스에 있는 리스트에서 0번인덱스값 출력

  리스트 요소변경 R문법이랑 비슷함 all_birds[1] = 'wanda' 로 할당 가능!

#간단문법

.append() 리스트 끝에 항목추가하기 cf) 리스트병합시 .append()를 사용하면 하나의 리스트를 추가하게 됨! 즉,이중리스트가 됨

.extend() 다른리스트 병합 / += 이용하여서도 병합가능함!

.insert(삽입할인덱싱위치, ' 요소 ' ) 리스트에서 원하는 위치에 삽입

del 리스트이름[인덱싱번호]  -> 특정 요소 삭제하기 #del은 함수가 아니기 때문에 .del()형태로 사용이 불가하다!

.remove() 해당 삭제할 요소의 위치를 모를때 삭제하는 법

.pop() 인덱스로 항목얻은후 삭제   여기서 () 이거나 (-1) 이면 리스트의 끝을 삭제하고 (0)이면 리스트의 헤드를 삭제

.index('요소') 해당 요소가 있는 인덱싱 번호 반환

in : 존재여부 확인하기 ex) 'Bob' in 리스트이름 -> T/F로 반환

.count() 얼마나 요소가 있는지 세기

.sort() 정렬함수... 숫자인경우 오름차순으로(내림차순으로 하고싶으면 reverse=True 인자 추가!) , 문자인 경우 알파벳순으로 정렬함

   참고로) .sorted() 는 리스트의 정렬된 복사본 만드는 함수

   리스트의 요소들이 다른 타입끼리 구성되 있어도 자동으로 변환해서 정렬해줌!

len() 항목개수 반환

#한 리스트를 두 변수에 할당했을 때, 한 변수의 리스트 요소값을 수정했을 때, 나머지 리스트에도 자동으로 반영이 됨

  그래서 반영되지 않게 하기 위해 .copy() / list() / 리스트[:] 를 이용하면 된다.

 

2.튜플

 #튜플언패킹 ex) marx_tuple = ('Grouch' , 'Chico', 'Harpo') 

                      a, b, c = marx_tuple 하면 abc 각각 요소 위치에 맞게 하나씩 할당 됨

tuple() 다른 객체를 튜플로 만들어줌

그러면 튜플을 굳이 사용하는 이유가 뭘까? 바로 딕셔너리 키로 사용할 수 있음! {key : value}

# , 로 구분하는 것 자체가 튜플(소괄호) 을 할당하는 거나 매한가지 

  --> ex) tuple = 'a', 'b', 'c' 나 tuple = ( 'a', 'b', 'c' ) 나 같다!

 

3.딕셔너리 - 항목순서 x / 인덱싱(오프셋) 사용 불가

dict() 딕셔너리로 변환 

--> ex) lol = [ ['a', 'b'], ['c', 'd'], ['e', 'f'] ] 일때 dict(lol) 하면

          { 'c' : 'd' , 'a' : 'b' , 'e': 'f' } 라고출력된다. 이때 변환시 순서는 임의적이다!!!

         이 때, lol 값에서 중괄호 두개가 순서 상관없이 () , [] 즉 튜플과 리스트가 와도되며 요소 값이 ab, cd , ef 이여도

         똑같이 딕셔너리로 변환하면 위와 같은 결과가 출력된다!

1. 항목 추가/변경하기 : 딕셔너리이름['key'] = '할당값'    #여기서 key들은 반드시 유일해야 함!

                                                                           만약에 중복되면 마지막에 있는 key: value가 승리해서 출력!

#딕셔너리 문법

.update() 딕셔너리 결합하기 .. 이때 두개의 딕셔너리안에 각각 같은 키값이 존재한다면 두번째 딕셔너리의 키값이 승리!

del 딕셔너리이름['key'] 특정 key와 그에 상응하는 value 삭제

.clear() 모든 항목 삭제 or 빈 딕셔너리= { } 를 재할당시켜줌

in 을 사용해서 key가 존재하는지 확인하기! -> T/F로반환 .. ex) 'key값' in 딕셔너리이름

[key] 항목얻기 ex) 딕셔너리이름['key이름']   cf) .get() 함수를 사용해서도 가능 ex) 딕셔너리이름.get('key', 'None') 으로                           해당 값이 없다면 None으로 출력해주는 추가 옵션인자도 넣어줄 수 있다.

.keys() 딕셔너리의 모든 키를 가져옴 list(딕셔너리이름.keys() ) 하면 key값들을 리스트로 반환

                                               list(딕셔너리이름.values() ) 하면 key에 해당하는 value들만 리스트로 모아 반환

.items() 딕셔너리 내부의 모든 쌍의 키와 value를 얻음... ex) list( 딕셔너리이름.items() ) 하면 리스트안에 튜플로반환!

.copy() 딕셔너리도 리스트와 매한가지로 두개의 변수에 할당할때 하나를 수정하면 반영되므로 따로 하나 만들어주기 위해 복사를 하자!

 

4.셋(set)

set = 값은 버리고 키만 남은 딕셔너리와 같음! 그래서 마찬가지로 각 키가 유일해야 함!

#문법

set() 셋 생성하기.. 콤마로 구분된 하나 이상의 값을 넣으면 됨! or 중괄호{} 안에 넣으면 됨

set() 데이터 타입 셋으로 변경하기 : 리스트,문자열, 튜플, 딕셔너리로부터 중복된 값을 버린(유일해야하니까!) 셋을 생성 가능

in 으로 값 멤버십 테스트하기 ex) for name, contents in drinks.items() -> drinks 딕셔너리의 모든 키벨류값을 얻어와서 key는 name에 해당하고 value는 contents에 해당한다!

& = 셋 인터섹션 연산자! 밑에 예시!

 for name, contents in drinks.items() :

     if contents & {'vermonth', 'orange juice' } :

         print(name)    => contents(value) 에 해당하는 것중에서 vermonth 또는 orange juice가 들어있는 해당 name(key)를 출력해라! 만약 해당만족 조건하는게 없다면 빈 셋을 출력한다

# &와 .intersection() 은 교집합출력!

# | 와 union() 은 합칩합 출력

# - 와 difference() 는 차집합 출력

# ^와 symmetric_difference() 합집합-교집합안 요소출력

# <= 와 .issubset() 은 부분집합 여부 판단 ex) a <= b 이면 b가 a의 상위집합인가? 판단

   >= 와 .supperset() 은 상위집합 여부 판단 ex) a >= b 이면 a가 b의 상위집합인가? 판단

   < 와 > 도 똑같은 원리로 가면 된다

#대괄호 [ ] 를 이용해서 리스트이든 튜플이든 딕셔너리(이 때는 key값을 넣어서 value를 반환)의 특정 하나의 요소에 접근이 가능하다

#딕셔너리의 키는 불변해야 하기 때문에 리스트, 딕셔너리, 셋은 다른 딕셔너리의 키가 될 수 없다. 하지만 튜플은 가능

(mapping 예제에서 살펴보기) 

 

                                                                          

 

 

 

반응형