Python
[6장] 리스트 예제
제이지연
2022. 10. 6. 16:00
#1
- 사용자에게 7개의 영어 단어를 입력받습니다
- 알파벳순으로 정렬한 후 화면에 표시 합니다.
- 또한 정렬한 결과의 첫번째 있는 단어, 중앙에 있는 단어, 마지막에 있는 단어 를 표시합니다.
출력예시 :

wordList=[]
print("단어?")
for i in range(7):
word=input()
wordList.append(word)
wordList.sort()
print("영어 단어 리스트 : ", end=" ")
print(wordList)
print("첫번째 단어:", wordList[0])
print("중앙의 단어:", wordList[3])
print("마지막 단어:", wordList[6])
#2 로또번호생성
- 원하는 숫자를 입력받는다.(1~10)
- 1번에서 입력받은 횟수만큼 로또 번호를 생성해 준다.
출력예시 :

import random
time = int(input("원하는 숫자를 선택하세요.(1~10): "))
for i in range(3):
numberList=[x for x in range(1,101)]
print(i+1,"회:", end=" ")
for i in range(7):
num=random.choice(numberList)
print(num, end=" ")
numberList.remove(num)
print("\n")
#3
- 0, 1, 2로만 이루어진 5*5 행렬을 랜덤으로 생성한다.
- 1번 행렬에서 0, 1, 2 각 숫자의 개수를 카운트하고 화면에 출력한다.
row=5
col=5
matrixA=[]
for i in range(row):
matrix=[]
for j in range(col):
matrix += [random.randint(0,2)]
matrixA+=[matrix]
print(matrixA)
count0, count1, count2=0,0,0
for i in range(row):
for j in range(col):
number=matrixA[i][j]
if number==2:
count2+=1
elif number==1:
count1+=1
else:
count0+=1
print("0의 개수는", count0, ",1의 개수는", count1, ",2의 개수는", count2)
#1 성적 처리 프로그램
학생들의 성적을 사용자로부터 입력받아서 리스트에 저장한다. 성적의 평균을 구하고 최대점수, 최소점수, 80점 이상 성적을 받은 학생의 숫자를 계산하여 출력해보자.
STUDENTS = 5
lst = []
count=0
for i in range(STUDENTS):
value = int(input("성적을 입력하시요: "))
lst.append(value)
print("\n성적 평균=", sum(lst) / len(lst))
print("최대점수=", max(lst))
print("최소점수=", min(lst))
for score in lst:
if score >= 80:
count += 1
print("80점 이상=", count)
#2 리스트에서 2번째로 큰 수 찾기
정수들이 저장된 리스트에서 두 번째로 큰 수를 찾아보자.
list=[-7, 2, 3, 8, 6, 6, 75, 38, 3, 2]
trash=max(list)
list.remove(trash)
print(max(list))
list1 = [1, 2, 3, 4, 15, 99]
# 리스트를 정렬한다.
list1.sort()
# 뒤에서 두 번째 요소를 출력한다.
print("두 번째로 큰 수=", list1[-2])
#3 콘테스트 평가
심판들의 점수가 리스트에 저장되어 있다고 가정하고 최소값과 최대값을 리스트에서 제가하는 프로그램을 작성해보자.
lista = [10.0, 9.0, 8.3, 7.1, 3.0, 9.0]
lista.remove(max(lista))
lista.remove(min(lista))
print(lista)
💡
하나의 리스트 안에 다양한 자료형이 공존할 수 있는가? 가능하다!
#4 리스트로 스택 흉내내기
스택은 데이터 구조중의 하나로서 데이터를 추가한 순서와 삭제하는 순서가 완전히 반대인 데이터 구조이다. 파이썬에는 내장 스택 유형이 없지만, 스택을 리스트로 구현할 수 있다.
stack=[]
for i in range(5):
element=input("요소를 입력하시오: ")
stack.append(element)
for i in range(len(stack)):
print(stack.pop(0))
#5 친구 관리 프로그램
#6 리스트 슬라이싱
numbers = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]
- 리스트 슬라이싱 만을 이용하여 리스트의 요소들의 순서를 거꾸로하면서 하나씩 건너뛰기
print(numbers[::-2])
print(numbers[9:0:-2])
#print(numbers[9:0:1])
- 리스트 슬라이싱 만을 이용하여 첫번째 요소만을 남기고 전부 삭제할 수 있는가?
numbers[1:] = [ ]
print(numbers)
#7 리스트 변경 함수
어떤 회사에서 리스트에 직원들의 월급을 저장하고 있다. 회사에서 일괄적으로 30%의 월급 인상을 하기로 하였다. 리스트의 모든 요소들을 30% 증가시키는 함수 modify()를 작성하고 테스트 해보자.
def modify(get):
new=[]
for i in get:
new.append(i*1.3)
return new
befo=[200, 250, 300, 280, 500]
print(modify(befo))
salaries = [200, 250, 300, 280, 500]
def modify(values, factor) :
for i in range(len(values)) :
values[i] = values[i] * factor
print("인상전", salaries)
modify(salaries, 1.3)
print("인상후", salaries)
#8 리스트 함축 사용하기
0부터 99까지의 정수 중에서 2의 배수이고 동시에 3의 배수인 수들을 모아서 리스트로 만들어라.
lists=[x for x in range(100)]
new=[x for x in lists if x%2==0 and x%3==0]
print(new)
#9 누적값 리스트 만들기
i 번째 요소가 원래 리스트의 0부터 i번째 요소까지의 합계인 리스트를 생성하는 프로그램을 작성하라.
origin=[10*x for x in range(1,6)]
print(origin)
new=[]
element=0
for x in origin:
element+=x
new.append(element)
print(new)
list1=[10, 20, 30, 40, 50]
list2=[sum(list1[0:x+1]) for x in range(0, len(list1))]
print("원래 리스트: ",list1)
print("새로운 리스트: ",list2)
#10 피타고라스 삼각형
피타고라스의 정리를 만족하는 삼각형들을 모두 찾아보자. 삼각형 한 변의 길이는 1부터 30이하이다.
[(x,y,z) for x in range(1,30) for y in range(x,30) for z in range(y,30) if
x**2 + y**2 == z**2]
new_list = []
for x in range(1, 30):
for y in range(x, 30):
for z in range(y, 30):
if x**2+y**2==z**2:
new_list.append((x, y, z))
print(new_list)
#11 전치 행렬 계산
origin=[[1, 2, 3],[4, 5, 6], [7, 8, 9]]
neww=[]
for i in range(len(origin[0])):
new=[]
for j in range(len(origin)):
new+=[origin[j][i]]
neww=neww+[new]
print(neww)
transposed = []
matrix = [[1, 2, 3], [4, 5, 6], [7, 8, 9]]
print("원래 행렬=", matrix)
# 열의 개수만큼 반복한다.
for i in range(len(matrix[0])):
transposed_row = []
for row in matrix: # 행렬의 각 행에 대하여 반복
transposed_row.append(row[i]) # i번째 요소를 row에 추가한다.
transposed.append(transposed_row)
print("전치 행렬=", transposed)