Python

2차원 리스트, 튜플

11mia 2020. 9. 10. 03:21

#1. 2차원 리스트

a = [[10, 20],
     [50, 60, 70],
     [9],
     [30, 40],
     [8],
     [82, 9, 100, 0]]
print('a[3][1] = ', a[3][1])
print('a[5][2] = ', a[5][2])

====Result====
a[3][1] =  40
a[5][2] =  100

#2. 2차원 리스트 동적 생성

# [[1, 2], [30], [4, 50, 6]]
a = []
a.append([])
a[0].append(1)
a[0].append(2)
a.append([])

a[1].append(30)
a.append([])

a[2].append(4)
a[2].append(50)
a[2].append(6)
print(a)

====Result====
[[1, 2], [30], [4, 50, 6]]

#3. 리스트 & 튜플

  • 튜플 = ((값, 값), (값, 값), (값, 값))
  • 튜플 = ([값, 값], [값, 값], [값, 값])
  • 리스트 = [(값, 값), (값, 값), (값, 값)]
a = ((1, 2), (3, 4), (5, 6))
b = (['a', 6], ['e', 'b'], [3.3, 4])
c = [(10, 20), (30, 40)]

# a[0][0] = 50 #TypeError: 'tuple' object does not support item assignment
# a[0] = (10, 20) #TypeError: 'tuple' object does not support item assignment

b[0][0] = 1
# b[0] = [1, 0] #TypeError: 'tuple' object does not support item assignment
print('b : ', b)

# c[0][0] = 1 #TypeError: 'tuple' object does not support item assignment
c[0] = (1, 2)
print(c)

====Result====
b :  ([1, 6], ['e', 'b'], [3.3, 4])
[(1, 2), (30, 40)]

#4. pprint

from pprint import pprint
a = [[10, 20], [30, 40, 100], [50, 60]]
# indent : 들여쓰기 수
# width : 가로폭
pprint(a, indent=4, width=20)

====Result====
[   [10, 20],
    [30, 40, 100],
    [50, 60]]

#5. 전체 출력 (for)

a = [[10, 20], [30, 40], [50, 60]]
for x,y in a:
    print(x, y)
    
====Result====
10 20
30 40
50 60

a = [[10, 20], [30, 40, 100], [50, 60]]
for i in a:
    for j in i:
        print(j, end=' ')
    print()
    
====Result====
10 20 
30 40 100 
50 60 
a = [[10, 20], [30, 40, 100], [50, 60]]
for i in range(len(a)):
    for j in range(len(a[i])):
        print(a[i][j], end=' ')
    print()
    
====Result====
10 20 
30 40 100 
50 60 

#6.  전체 출력 (while)

a = [[10, 20], [30, 40], [50, 60]]

i = 0
while i < len(a):
    x, y = a[i]
    print(x, y)
    i += 1
    
====Result====
10 20
30 40
50 60
a = [[10, 20], [30, 40, 100], [50, 60]]

i = 0
while i < len(a):
    j = 0
    while j < len(a[i]):
        print(a[i][j], end=' ')
        j += 1
    print()
    i += 1
    
====Result====
10 20 
30 40 100 
50 60

#7. 동적 생성

a = []

for i in range(3):
    line = []
    for j in range(2):
        line.append(0)
    a.append(line)

print(a)

b = [[0 for j in range(2)] for i in range(3)]
print(b)

c = [[0]*2 for i in range(3)]
print(c)

====Result====
[[0, 0], [0, 0], [0, 0]]
[[0, 0], [0, 0], [0, 0]]
[[0, 0], [0, 0], [0, 0]]
a = [1, 2, 3, 4]
b = []

for i in a:
    line = []
    for j in range(i):
        line.append(j)
    b.append(line)

print(b)

c = [[i] * i for i in [1, 2, 3, 4]]
print(c)

====Result====
[[0], [0, 1], [0, 1, 2], [0, 1, 2, 3]]
[[1], [2, 2], [3, 3, 3], [4, 4, 4, 4]]

#8. sort

  • sorted(반복가능한객체, key=정렬함수, reverse=True 또는 False)
people = [
    ['lee', 'M', 19],
    ['kim', 'F', 25],
    ['park', 'F', 7]
]

print(sorted(people, key=lambda people: people[0]))
print(sorted(people, key=lambda people: people[1]))
print(sorted(people, key=lambda people: people[2]))

====Result====
[['kim', 'F', 25], ['lee', 'M', 19], ['park', 'F', 7]]
[['kim', 'F', 25], ['park', 'F', 7], ['lee', 'M', 19]]
[['park', 'F', 7], ['lee', 'M', 19], ['kim', 'F', 25]]

#9. copy , deepcopy

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

b = a
b[0][0] = 10
print('a : ', a)
print('b : ', b)

====Result====
a :  [[10, 2], [3, 4]]
b :  [[10, 2], [3, 4]]
a = [
    [1, 2],
    [3, 4]
]

b = a.copy()
b[0][0] = 10
print('a : ', a)
print('b : ', b)

====Result====
a :  [[10, 2], [3, 4]]
b :  [[10, 2], [3, 4]]
import copy

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

b = copy.deepcopy(a)
b[0][0] = 10
print('a : ', a)
print('b : ', b)

====Result====
a :  [[1, 2], [3, 4]]
b :  [[10, 2], [3, 4]]