Backend/Python

Python 파이썬 리스트 : 리스트 관련 함수 및 예제

쏠솔랄라 2023. 7. 3. 14:22

 

 

Python 파이썬 리스트 VS 튜플

 

Python 파이썬 리스트 VS 튜플

리스트 : 데이터의 목록 수정, 추가, 삭제 모두 가능 프로그램에서 많이 사용되는 데이터들을 관리하는 자료형 선언 : [ ] 를 통해 생성 배열 : 파이썬에서는 배열이 없다 Collection : 다량의 데이터

developernew.tistory.com

 

 


 

 

리스트의 속성

 

 

li = [1,2,3,4,5]

a,b,c,d,e = li # unpacking

li[0] = 10

print(li[0])

print(li[2])
print(li[-3])

print(li[2:-1])
print(li[2:4])

li = [(1,2),(1,2,3),[1,2,3,4,5]]

for i in range(li.__len__()):
    for j in range(li[i].__len__()):
        print(li[i][j],end="  ")
    print()

 

출력화면

 

 

리스트 관련 함수

 

li = [1,2,3,4,3,4,5,4,5,6,7,8]

 

 

append(value)

: 리스트의 끝에 데이터를 추가하는 함수 

 

li.append(9)
print(li)

li.append([1,2])
print(li)

 

출력화면

 

 

extend(value)

: 컬렉션데이터들이 그냥 추가되는것이 아니라 각각의 요소들이 추가가 되는 메소드

 

li.extend((1,2))
print(li)

 

출력화면



insert(idx,value)

: 특정 위치에 값을 추가하는 함수
인덱스범위를 벗어나면 제일 끝에 데이터를 추가해 준다

li.insert(0,0)
print(li)

 

출력화면

 


pop(idx)

: 특정위치의 데이터를 삭제 하는 함수
인덱스값을 적지 않으면 제일 뒤에 있는 데이터를 삭제
인덱스 범위를 벗어나면 에러

li.pop()
print(li)

li.pop(0)
print(li)

 

출력화면



remove(value)

: 특정 데이터에 해당하는 값을 찾아 삭제하는 함수

데이터가 없으면 에러

li.remove(1)
print(li)

 

출력화면

 


count(value)

: 리스트에서 일치하는 값의 수를 반환 한다

print(li.count(0))

 

출력화면



index(value)

: 리스트에서 일치하는 값의 인덱스 번호를 반환하는 함수
값이 없으면 에러

print(li.index(4,5))

 

출력화면

[2, 3, 4, 3, 4, 5, 4, 5, 6, 7, 8, 9, [1, 2], 1]의 리스트 값에서

4를 인덱스 5번째부터 시작해서 첫번째 값의 인덱스 값을 출력



reverse()

: 리스트의 모든 값을 뒤집어 나열하는 함수

li.reverse()
print(li)

 

출력화면



sort(True/False)

: 리스트의 값을 오름차순(False), 내림차순(True) 정렬한다
생략시 오름차순 정렬

li = [1,2,3,4,3,4,5,4,5,6,7,8]

li.sort(reverse=False) # defalut 값
print(li)
li.sort(reverse=True)
print(li)

 

출력화면



clear()

: 리스트의 데이터를 모두 삭제 하는 함수

li.clear()
print(li)

 

출력화면

 

 


 

 

얕은복사 VS 깊은복사

 

 

얕은복사

비트단위로 복사하는 방식
인스턴스 공간의 데이터를 복사할수가 없다

 


깊은 복사 : copy

실제 데이터들이 있는 인스턴스공간의 데이터들을 복사하는 방식
복사할때 새로운 인스턴스 공간이 만들어진다

 

 

import copy

l1 = [1,2,3]
l2 = copy.deepcopy(l1)
l1[1] = 4

print(l1[1])
print(id(l1))
print(l2[1])
print(id(l2))

print(l1)

 

출력화면

 

 


 

 

Exercise1

 

 

아래의 리스트 구조를 보고 아래에서 요구하는 결과가 반영 되도록 코드를 작성하시오.

1. 비빔밥과, 돈까스의 가격을 출력 하시오.
2. 사용자 입력으로 메뉴와 가격을 입력 받아 menu 변수에 자료를 추가하는 코드를 작성 하시오.
3. 사용자 입력으로 메뉴와 가격을 입력 받아 menu 변수에 자료를 추가할 때
기존에 동일한 메뉴가 존재하는 경우 가격만 변경 되도록 코드를 작성 하시오.
4. 메뉴를 자동으로 선택하여 출력하는 코드를 작성 하시오.

 

menu = [['칼국수', 6000], ['비빔밥', 5500], ['돼지국밥', 7000], ['돈까스', 7000], ['김밥', 2000], ['라면', 2500]]

 

 

#1

print("{} : {}원".format(menu[1][0], menu[1][1]))
print("{} : {}원".format(menu[3][0], menu[3][1]))

 

출력화면

 

 

#2

while True:
    name = input("메뉴를 입력하세요(종료 시 exit입력) : ")
    if name=='exit':
        print("종료")
        break

    price = input("메뉴 가격을 입력하세요 : ")

    menu.append([name, price])
print(menu)

 

출력화면

 

 

#3

while True:
    name = input("메뉴 입력(종료 시 exit입력) : ")
    if name=='exit':
        print("종료")
        break
    price = input("가격 입력 : ")

    check = True

    for i in range(menu.__len__()):
        if menu[i][0]==name:
            menu[i][1] = price
            print("{}의 가격이 {}원으로 변경되었습니다.".format(name, price))
            check = False
            break
    if check:
        menu.append([name,price])
        print("{}의 가격이 {}원으로 추가되었습니다.".format(name,price))

print(menu)

 

출력화면

 

 

#4

import random

ran = int(random.random()*menu.__len__())
print("메뉴 자동 선택 : {} {}원".format(menu[ran][0], menu[ran][1]))

 

출력화면