본문 바로가기
C++ 200제/코딩 IT 정보

[파이썬 입문] 리스트 튜플 딕셔너리 (List, Tuple, dict)

by vicddory 2019. 8. 1.

리스트 (List)

[...] 형태로 파이썬 리스트(List)를 나타냅니다.


1
= [10203040]
cs


아래와 같이 줄을 바꿔도 허용 됩니다. 마지막 쉼표( , )는 선택 사항입니다.


1
2
3
4
5
colors =
    'red'
    'green'
    'blue',
]
cs


여러 자료형을 섞어서 리스트를 만들 수 있습니다.


1
= [10'ABC']
cs


리스트 요소는 for를 사용하여 접근/사용 할 수 있습니다.


1
2
3
= [12345]
for n in a:
    print n
cs

[ n ] 형태로 n번째 요소를 참조합니다. 첫번째 요소는 0번째로 간주합니다.


1
2
3
= ['A''B''C''D''E''F''G']
a1 = a [0]        # 0 번째 : 'A'
a2 = a [2]        # 두번째 : 'C'
cs


[ n : m ] 형태로 n번째에서 m번째 전까지(즉, m - 1번째 까지) 요소를 참좋바니다. n을 생략하면 처음부터(0부터) m번째 전까지 참조합니다.


1
2
3
4
= [0123456789]
a1 = a [2 : 4# 두 번째부터 세 번째 : [2, 3]
a2 = a [2 :]   # 두 번째부터 마지막 : [2, 3, 4, 5, 6, 7, 8, 9]
a3 = a [4]     # 처음부터 세 번째 : [0, 1, 2, 3]
cs


[ n : m : s ]는 s개 간격으로 참조합니다.


1
2
= [0123456789]
a1 = a[1 : 8 : 2# 1번째 부터 7번째 까지 2개 간격 : 1, 3, 5, 7
cs


n, m에 음수를 지정하면 역순(뒤에서 부터)으로 계산합니다.


1
2
3
= ['A''B''C''D''E''F''G']
a1 = a [-1]      # 마지막 문자 'G'
a2 = a [-3 : -1# 마지막에서 3번째 문자~마지막에서 첫 번째 이전 문자 : 'E', 'F'
cs


+ 연산자를 사용하여 list를 합칠 수 있습니다.


1
print [123+ [456# => [1, 2, 3, 4, 5, 6]
cs


len() 함수를 사용하여 리스트 요소 개수를 확인합니다.


1
print len ([123]) # => 3
cs


파이썬 리스트의 리스트를 만들 수 있습니다.


1
2
3
4
5
= [[12], [34], [56]]
 
for list in a:
    for n in list:
        print n,  #=> 1 2 3 4 5 6
cs

튜플 (Tuple)

(...)안에 요소를 삽입하는 것을 파이썬 튜플(tuple)이라고 합니다. 튜플은 list와 거의 비슷하게 사용할 수 있지만, 요소를 변경할 수 없다는 점이 다릅니다.


1
= (10203040)
cs


요소가 하나 뿐이라면 마지막에 쉼표(,)를 추가해야 합니다.


1
2
= (10)  # 튜플이 아닌 숫자 10이 된다
= (10,) # 튜플(10,)이 된다
cs


list 요소는 변경할 수 있지만 튜플 요소는 변경할 수 없습니다.


1
2
3
4
5
a1 = [10203040]
a2 = (10203040)
 
a1[2= 60    # 대입 가능
a2[2= 60    # TypeError 예외 및 오류가 
cs


튜플을 list로 변환하려면 list(), list를 튜플로 변환하려면 tuple()를 사용합니다.


1
2
print list((123))     #=> [1, 2, 3]
print tuple([123])    #=> (1, 2, 3)
cs


[파이썬 입문] 리스트 튜플 딕셔너리 (List, Tuple, dict)


딕셔너리 (dict)

{...}는 사전 파이썬 딕셔너리(dict, dictionary)라는 키-값 한 쌍의 목록입니다.


1
= {'손흥민'30'이강인'40''80}
cs


각 요소는 다음과 같이 사용합니다.


1
2
3
d1 = d['손흥민']
d2 = d['이강인']
d3 = d['류현진']
cs


딕셔너리의 모든 요소와 값을 참조하려면 items(), keys(), values(), iteritems()를 사용합니다. 참조에는 순서가 없습니다.


1
2
3
4
5
6
7
8
9
10
11
12
13
= {'손흥민'30'이강인'40'류현진'80}
 
for k, v in d.items():
    print k, v             # 류현진 80, 손흥민 30, 이강인 40
 
for k in d.keys():
    print k, d[k]          # 이강인 40, 손흥민 30, 류현진 80
 
for v in d.values():
    print v                # 80, 30, 40
 
for k, v in d.iteritems():
    print k, v             # Tanaka 80, 손흥민 30, 이강인 40
cs

리스트 함수(map(), filter(), reduce())

map()은 파이썬 리스트 각 요소에 연산 처리하여 결과를 반환합니다. 아래 예제에서는 각 요소를 두배로 곱합니다.


1
2
3
4
5
6
= [123]
 
def double(x): return x * 2
print map(double, a)            #=> [2, 4, 6] : 함수 방식
print map(lambda x: x * 2, a)   #=> [2, 4, 6] : lambda 방식
print [x * 2 for x in a]        #=> [2, 4, 6] : 내포 표기
cs


filter()는 리스트 각 요소를 연산 처리하며, 결과가 참이 되는 요소를 제거합니다. 아래 예제에서는 각 요소에서 홀수만을 표기합니다.


1
2
3
4
5
6
7
= [123]
 
def isodd(x): return x % 2
 
print filter(isodd, a)              #=> [1, 3] : 함수 방식
print filter(lambda x: x % 2, a)    #=> [1, 3] : lambda 방식
print [x for x in a if x % 2]       #=> [1, 3] : 내포 표기
cs


reduce()는 list의 처음 두 요소를 인수로 호출하여 연산 처리합니다. 이후 결과를 하나의 요소로 인식하여 순차적으로 다른 요소와의 연산을 처리합니다. 아래 예제는 각 요소를 모두 더한 결과를 출력합니다.


1
2
3
4
5
6
= [12345]
 
def add(x, y): return x + y
 
print reduce(add, a)                #=> 15 : 함수 방식
print reduce(lambda x, y: x + y, a) #=> 15 : lambda 방식
cs


파이썬 리스트 튜플 딕셔너리


list 내포 표기

list 내포 표기를 이용해 map(), filter(), 람다를 간단하게 사용할 수 있습니다.


1
2
3
4
5
6
7
8
9
= [123]
print [x * 2 for x in a]                        #=> [2, 4, 6]
print [x * 2 for x in a if x == 3]              #=> [6]
print [[x, x * 2for x in a]                   #=> [[1, 2], [2, 4], [3, 6]]
print [(x, x * 2for x in a]                   #=> [(1, 2), (2, 4), (3, 6)]
 
= [456]
print [x * y for x in a for y in b]             #=> [4, 5, 6, 8, 10, 12, 12, 15, 18]
print [a[i] * b[i] for i in range(len(a))]      #=> [4, 10, 18]
cs


셋 (set 세트)

세트(set)는 파이썬 list 중복을 처리합니다. 세트끼리 뺄셈, OR, AND, XOR 연산을 지원합니다.


1
2
3
4
5
6
7
8
9
10
11
12
= set(['red''blue''green'])
= set(['green''yellow''white'])
 
print a                #=> set(['red', 'blue', 'green'])
print b                #=> set(['green', 'yellow', 'white'])
print a - b            #=> set(['red', 'blue'])
print a | b            #=> set(['red', 'blue', 'green', 'yellow', 'white'])
print a & b            #=> set(['green'])
print a ^ b            #=> set(['red', 'blue', 'yellow', 'white'])
print 'green' in a     #=> True
a.add('black')
print a                #=> set(['red', 'blue', 'green', 'black'])
cs




파이썬 입문 강좌 11강


관련 글

[파이썬 기초] 변수, 상수, 문서문자열(python docstring)

[파이썬 입문] 자료형 문자열 각종 수식 정리

[파이썬 입문] 구문 - 문법, 주석, 들여쓰기, 인코딩 규칙

[파이썬 기초] 클래스 사용법 - 4단계로 마스터

파이썬 딕셔너리 예제 4가지, for반복문 중심

파이썬 정렬 sort sorted reverse=true 예제 4개

댓글