Python:List(2)

aiden·2023년 6월 9일
0

Python

목록 보기
7/14

함수 인자로 리스트 전달

함수로 인자를 전달하는 방식에는 두 가지 방법이 있음을 공부했다. 값에 의한 호출과 참조에 의한 호출이다. 파이썬에서는 정수, 문자열과 같은 변경 불가능한 객체에 대해서 값에 의한 호출이 이루어졌다. 리스트와 같은 변경 가능한 객체는 참조에 의한 호출이 이루어진다.
따라서 값에 의한 호출의 경우 함수 내에서 내용을 변경해도 새로운 객체가 생성될 뿐 함수를 빠져나와도 값이 변경되지 않고, 참조에 의한 호출의 경우 함수 내에서 변경 시 함수를 빠져나와도 변경 사항이 반영된다.

List Comprehension

리스트 함축은 집합의 정의와 유사한 방식으로 리스트를 정의하는 것이다. 구조는 다음과 같다.

S = []
for x in range(10):
	S.append(x**2)
#S = [x**2 for x in range(10)]과 동일

반복문을 사용해서 동일한 리스트를 생성할 수 있지만, 리스트 함축을 이용하면 간결해진다.
다음과 같이 조건을 포함한 리스트 함축도 가능하다.

다양한 자료형에 대해 리스트 함축을 할 수 있다.
단어의 첫 글자를 추출해 리스트로 만드는 예시를 보자.

list = ["Central", "Processing", "Unit"]
result = [word[0] for word in list]
print(result)

['C', 'P', 'U']

리스트 함축은 cross product 형태로도 가능하다. 다음 예시를 보자.

flavors = ["Grape", "Strawberry", "Banana"]
type = ["Juice", "Cake", "Candy", "Mochi"]

dessert = [[x, y] for x in flavors for y in type]
print(dessert)

[['Grape', 'Juice'], ['Grape', 'Cake'], ['Grape', 'Candy'], ['Grape', 'Mochi'], ['Strawberry', 'Juice'], ['Strawberry', 'Cake'], ['Strawberry', 'Candy'], ['Strawberry', 'Mochi'], ['Banana', 'Juice'], ['Banana', 'Cake'], ['Banana', 'Candy'], ['Banana', 'Mochi']]

x, y를 (x,y)와 같이 튜플로 묶어도 된다.

파일 읽기

자세한 파일 입출력은 후에 공부할 것. 파일을 읽어서 리스트에 저장하는 기본적인 방법은 다음과 같다.

data = []
f = open("C:\경로\data.text", "r")

#파일에 저장된 모든 줄 읽어오기
for line in f.readline():
	data.append(line.strip()) #개행문자 삭제 후 리스트에 추가

2차원 리스트

파이썬에서도 다른 언어와 같이 2차원 리스트를 만들 수 있다.

정적 생성

동적 생성

다음과 같이 리스트 함축으로도 2차원 배열을 생성할 수 있다.

rows = 3
cols = 5

s = [([0] * cols) for row in range(rows)]

원소 접근

list[3][5] = 10과 같이 2개의 인덱스 번호를 이용해 접근한다.
2차원 배열의 모든 원소 접근 시 이중 루프를 이용한다.

nums = [ 
[ 1, 2, 3, 4, 5 ],
[ 6, 7, 8, 9, 10 ], 
[11, 12, 13, 14, 15 ] 
]

rows = len(nums)
cols = len(nums[0])

for r in range(rows):
    for c in range(cols):
        print(nums[r][c], end = " ")
    print()

1 2 3 4 5
6 7 8 9 10
11 12 13 14 15

다음 방식으로 리스트 안에 다른 리스트를 내장하는 것도 가능하다.

a = ['a', 'b', 'c']
n = [1, 2, 3]
list = [a, n]
print(list

[['a', 'b', 'c'], [1, 2, 3]]

2차원 리스트 연산

행, 열의 합계

#3번째 행의 합 계산
nums = [ 
[ 1, 2, 3, 4, 5 ],
[ 6, 7, 8, 9, 10 ], 
[11, 12, 13, 14, 15 ] 
]
cols = len(nums[0])

sum = 0
for n in range(cols):
	sum += nums[2][n]
print(sum)

65

이웃 요소 접근

이웃 요소들의 인덱스는 다음과 같다.


예제 #1

파이썬을 이용하여 연락처를 관리하는 프로그램을 작성
하여 보자. 연락처 관리 프로그램은 다음과 같은 메뉴를
가져야 한다.
업로드중..

friendList = []

def func1():
    for friend in friendList:
        print(friend, end = " ")
    print()

def func2():
    new = input("이름을 입력하시오 : ")
    friendList.append(new)

def func3():
    delete = input("삭제할 이름을 입력하시오 : ")
    if delete in friendList:
        friendList.remove(delete)
        print("삭제되었습니다")
    else:
        print("존재하지 않는 이름입니다")

def func4():
    modify = input("수정할 이름을 입력하시오 : ")
    if modify in friendList:
        modify = friendList.index(modify)
        new = input("새 이름을 입력하시오 : ")
        friendList[modify] = new
    else:
        print("존재하지 않는 이름입니다")

num = 0
while (num != 9):
    num = int(input("-" * 20 + "\n" +"1. 친구 리스트 출력\n2. 친구 추가\n3. 친구 삭제\n4. 이름 변경\n9. 종료\n메뉴를 선택하시오 : "))
    if (num == 1):
        func1()
    elif (num == 2):
        func2()
    elif (num == 3):
        func3()
    elif (num == 4):
        func4()
        
print("프로그램 종료합니다")
profile
파인애플 좋아하세요?

0개의 댓글