🧐 🤔 그거 어떻게 쓰더라 🙄 😙

파이썬 내장형 시퀀스

2022. 7. 20. Evergood Kim이가 씀
l = [10, 'ABC', (2, 3)]

for x in l:
    print(x)

시퀀스 형

다른 언어들에서의 배열에 해당.

시퀀스형들은 모두 이터러블(멤버를 한 개씩 반환할 수 있는 객체)이다. for문에 for 변수 in 시퀀스 머 이렇게 넣어 쓰면 된다.

같이 보면 좋은 글: for문

리스트 list

가변 시퀀스.

리스트 생성

리스트 생성자 list(), list( 이터러블 )
인자 이터러블과 같은 멤버와 그 순서인 리스트를 생성하고 반환.
리스트 디스플레이
[ 표현식, 표현식, 표현식, … ]
저것들을 멤버로 하는 리스트 생성
[ 컴프리헨션 ]
컴프리헨션
[]
빈 리스트

튜플 tuple

불변 시퀀스

튜플 생성

튜플 생성자 tuple(), tuple( 이터러블 )
인자 이터러블과 같은 멤버와 그 순서인 튜플을 생성하고 반환.
쉼표로 멤버 나열 a, b, c, …
마지막 멤버 뒤의 쉼표는 생략 가능하지만 예외로; 멤버가 한 개인 경우엔 뒤에 쉼표가 있어야 튜플이 된다. (쉼표 없이는 그냥 표현식과 구별이 안 되니까)
리스트, 집합, 딕셔너리 디스플레이는 대괄호[], 중괄호{}로 만드는 게 맞지만 소괄호()는 튜플을 만드는 기호가 아니다.(빈 튜플만 예외) 튜플은 쉼표,로 만들어진다. 그러나 문법상 모호함을 피하기 위해 괄호가 자주 필요하다. 그리고 출력도 괄호로 싸서 하잖아(a, b, c)
a =  1, 2, 3   # (1, 2, 3)
b = (1, 2, 3)  # (1, 2, 3)
(), (여기공백가능)
빈 튜플

범위 range

정수의 등차수열

불변 시퀀스

범위 생성자

인자들은 정수만 된다.

range( stop )
0부터 stop 전까지의 정수 배열. 즉 r[i] = i, r[i] < stop
range(5)  # 0 1 2 3 4
range( start, stop )
start부터 stop 전까지의 정수 배열. 즉 r[i] = start + i, r[i] < stop
range(2, 5)  # 2 3 4
range( start, stop, step )
start부터 stop 전까지 step 간격의 정수 배열. 즉 r[i] = start + i*step, step의 부호에 따라 r[i] < 또는 > stop
range(20, 50, 10)  # 20 30 40

음의 방향으로 가는 범위를 만들 때는 반드시 step까지 지정해야 한다. step의 기본값이 1이기 때문이다. range(-10) 한다고 자동으로 step이 -1로 설정되지 않는다.

시퀀스의 연산

탐색

서브스크립션 s[i]
s의 i번째 멤버 (0부터 시작)
음의 인덱스: -1 ~ -(시퀀스길이) = 마지막에서부터 첫번째 ~ 마지막 원소. 그 외에는 IndexError: 인덱스 범위 에러
슬라이싱 s[i:j], s[i:j:k]
i번째부터 j 전번째까지 부분배열
s.copy()
s의 얕은복사본. s[:]와 같다.
x in s, x not in s
비교연산 - 멤버십 검사innerLink_31
s의 멤버 중에 x와 같은 값인 게 있으면 True, 아니면 False. not in은 그 반대.
문자열의 경우; x가 s의 부분문자열인지 검사한다.
len(s)
s의 길이 (s의 멤버 개수)
min(s), max(s)
s 멤버 중 최소값, 최대값 min(s, key, default), max(s, key, default)에서 ??? key, default
s.index(x), s.index(x, i), s.index(x, i, j)
???
s.count(x)
x와 같은 값의 멤버 수

확장

공통
s1 + s2
s1와 s2 이어붙이기. 범위형은 이 연산 불가.
s * n, n * s
s n개를 잇기. n은 정수이다. 음수이면 0으로 취급된다.
가변 시퀀스 전용
s.append(x)
s의 끝에 새 멤버로서 x 추가
s.insert(i, x)
s의 i째 멤버로서 x 추가. 그 뒤의 멤버들은 한 칸씩 밀린다.
s.extend(t)
s의 끝에 새 멤버로서 이터레이터 t의 멤버들 추가

변경

가변 시퀀스 전용
s[x] = y
s의 x번째 멤버를 y로 교체
s[i:k] = t
s의 i부터 k 전까지의 멤버들을 삭제하고; 그 자리를 이터러블 t의 멤버들로 채운다.
리스트.sort( key, reverse )
리스트를 (원본을) 정렬한다.
  1. key
    함수. 키워드전용. 기본값 None. 리스트의 각 요소에서 비교 키를 추출할 함수. None이면 별도 계산 없이 직접 정렬된다.
  2. reverse
    논리값. 키워드전용. 기본값 False. True이면 역순
정렬 기능을 하는 또다른 함수로; 내장함수 sorted( 이터러블, key, reverse )는 원본은 두고; 정렬 결과를 새 리스트 객체로 반환한다.

삭제

del s를 제외하면; 변경과 마찬가지로 가변시퀀스에서만 된다.

del s
이름 s 삭제
del s[i], del s[i:k]
s.remove(x)
s의 멤버 중 값이 x와 같은 멤버를 삭제. 여럿이면 첫 번째 것만.
s.pop(i)
i번째 멤버를 삭제하며 반환. i가 없으면 맨끝것.
s.clear
s의 모든 멤버 제거. del s[:]와 같다.

TODO 같이 보면 좋은 글: 문자열 ???
728x90