1. 리스트 생성
1)리스트 내포
[ 요소 for i in range(10) ] 이런 식으로 리스트 내포를 사용해 리스트를 생성 할 수 있습니다. list(요소 for i in range(10)) 이런 식으로 사용하는 방법도 있지만 보통 list(range(10)) 형태로 많이 사용합니다.
2) 리스트 연산
리스트는 문자열처럼 곱셈을 이용해 반복되는 요소를 저장하거나 덧셈으로 합칠 수 있습니다.
리스트의 합병과 반복
두개의 리스트를 합칠 때는 연결 연산자인 + 연산자를 사용할 수 있다.
>>> list1 = [1, 2, 3]
>>> list2 = [4, 5. 6]
>>> list = list1 + list2
>>> list
[1, 2, 3, 4, 5, 6]
리스트를 반복하는 것은 반복 연산자인 * 를 사용하면 된다.
>>> val = [1, 2, 3] * 3
>>> val
[1, 2, 3, 1, 2, 3, 1, 2, 3]
출처 : [Python] 리스트의 기초 연산들 – nc2u 블로그 (cafe24.com)
3) 리스트를 생성하는 2가지 방법
이전 포스트(24.02.16 정올 파이썬 리스트)에서 다뤘다시피 리스트를 생성할 때는 newList =[] 나 newList =list()를 사용할 수 있습니다.
4) 문자와 정수 형변환
아스키 코드에 의해 문자과 정수는 일대일로 변환할 수 있습니다. ord('A') =65 , chr(65)='A' 라는 사실을 기억하면 도움이 됩니다.
#리스트 내포
print("원소가 모두 0:", [0 for i in range(10)])
# 리스트 연산(곱셈)
print("또 다른 방법:",[0]*10)
# 문자열 리스트
print("원소가 모두 'Hi':",['Hi' for i in range(10)] )
print("1부터 10까지:",[i for i in range(1,11)])
#리스트 생성 2가지 방법
print("또 다른 방법:",list(range(1,11)))
print("5부터 15까지의 홀수:", [i for i in range(5,16,2)])
print("60부터 40까지의 3의 배수:",[i for i in range(60,39,-3)])
#문자열과 정수형 형변환
print("A부터 F까지의 알파벳:", [chr(i) for i in range(ord('A'), ord('F')+1)])
2. 1부터 10까지 정수를 입력받아 한번 이상 입력된 숫자가 몇 번 입력되었는지 출력하시오.
#sorting을 사용한 방법
listn = list(map(int, input().split()))
listn.sort()
for i in range(len(listn)):
if(listn[i]!=listn[i-1]):
print(listn[i],": %d개"%listn.count(listn[i]))
'''입력
5 6 10 9 3 5 3 5
'''
"""
3 : 2개
5 : 3개
6 : 1개
9 : 1개
10 : 1개
"""
#1,2,3,4,5,....10 배열에 나올 때마다 각각 +1하기
n = list(map(int, input().split()))
list = [0 for i in range(10)]
for i in n:
list[i-1] += 1
for i in range(0, len(list)):
if list[i] != 0:
print(f'{i+1} : {list[i]}개')
3. 특정 자리수만 사용하기
1) 일의 자리수만 세기
일의 자리수는 원래수%10 으로 구할 수 있습니다. 같은 방식으로 십의 자리수는 원래수 %100 등으로 구할 수 있습니다.
listn = list(map(int, input().split()))
li=[]
for i in listn:
li.append(i%10)
li.sort()
for i in range(len(li)):
if(li[i]!=li[i-1]):
print(li[i],": %d개"%li.count(li[i]))
2) 일의 자리수 빼고 세기
십의 자리수까지 표현하기 위해서는 원래수 //10 을 사용 할 수 있습니다. 같은 방식으로 백의 자리수까지 표현하기 위해서는 원래수 //100 을 사용합니다.
3) 특정 자리수 구하기
intNum = 1234
# 일의 자리 추출
intNum % 10
>>> 4
# 십의 자리 추출
intNum // 10 % 10
>>> 3
# 백의 자리 추출
intNum // 100 % 10
>>> 2
# 천의 자리 추출
intNum // 1000 % 10
>>> 1
출처: https://luvris2.tistory.com/444 [고은별의 기술 공유 연구소:티스토리]
4) 피보나치 수열 구하기
li=[0,1,1]
for i in range(3, 41):
r=li[-1] + li[-2]
li.append(r)
for i in [10,20,30,40]:
print('피보나치 수열 %d항 : %d'%(i,li[i]))
def fib(n):
a,b=1,1
if n==1 or n==2:
return 1
for i in range(1,n): #n-1번 반복
a,b = b, a+b
return a
print("피보나치 수열 10항 :",fib(10))
print("피보나치 수열 20항 :",fib(20))
print("피보나치 수열 30항 :",fib(30))
print("피보나치 수열 40항 :",fib(40))
5) 이전 항에서 다음항 빼서 저장하기
n=int(input())
lst=[100,n]
while True:
nextnumber= lst[-2]-lst[-1]
lst.append(nextnumber)
if nextnumber<0:
break
print(*lst, sep=" ")
'''입력
62
'''
"""출력
100 62 38 24 14 10 4 6 –2
"""
6) input 안 문자열
list1=[]
list2=[]
for i in range(1,4):
listn = list(map(int,(input("첫 번째 배열 "+str(i)+"행 ")).split()))
list1.append(listn)
for i in range(1,4):
listn = list(map(int,(input("두 번째 배열 "+str(i)+"행 ")).split()))
list2.append(listn)
for i in range(3):
for j in range(3):
print(list1[i][j]+list2[i][j],end=" ")
print()
아래와 같이 변수 부분에 언더바를 적어주면, 변수 없이 반복문이 실행된다.
print("first array ")
a = [list(map(int, input().split())) for _ in range(2)]
print("second array ")
b = [list(map(int, input().split())) for _ in range(2)]
for i in range(2):
for j in range(4):
print(list1[i][j]*list2[i][j],end=" ")
print()
7) 파스칼의 삼각형
파스칼의 삼각형을 계산할 때에는 두번째 줄부터 첫번째 열을 빼고 더하기 시작한다는 것과 이전 줄의 두 수를 더한다는 것을 기억하면 편합니다.
cycle = int(input()) # 반복 횟수 입력
numbers = [] # 출력 용 저장 리스트
temp = [] # 계산용 임시 리스트
for i in range(cycle): # 반복문
numbers.append(1) # 첫부분 1 입력
temp.append(1) # 계산용도 동일하게 적용
if i < 2:
pass # 2가 넘어갈 될 때까지 무시
else:
for j in range(1, len(numbers)-1): # 계산
temp[j] = numbers[j-1]+numbers[j]
for j in range(len(numbers)): # 계산 완료된 코드를 다시 저장
numbers[j]=temp[j]
print(str(numbers[j]) + " ", end="") # 한줄로 출력
print("") # 줄 띄우기
출처: https://mc-storage.tistory.com/118 [나만의 저장소:티스토리]
출처: https://mc-storage.tistory.com/118 [나만의 저장소:티스토리]
pas=[[0 for i in range(6)] for j in range(6)]
pas[1][1]=1
for i in range(2,6):
for j in range(1,i+1):
pas[i][j]=pas[i-1][j-1]+pas[i-1][j]
for i in range(1,6):
for j in range(1,i+1):
print(pas[i][j],end=' ')
print()
8. 리스트의 메소드
1) list.pop()
list.pop()을 사용해 리스트 마지막 요소를 지울 수 있습니다.
2) list.insert(인덱스, 넣을 요소)
list.insert(인덱스, 넣을 요소)를 사용해 원하는 자리(인덱스)에 요소를 추가할 수 있습니다. 인덱스 뒤에 있던 요소들은 뒤로 한 칸씩 밀립니다. 사라지지 않습니다.
3) list.extend(newList)
리스트 append()와 extend()의 차이점
>>> a = [1,2,3]
>>> b = [4,5]
>>> a.append(b)
>>> a
[1, 2, 3, [4, 5]]
리스트에 또 다른 리스트를 삽입할 때 append()는 이처럼 리스트 전체를 또 다른 엘리먼트로 처리한다.
>>> a = [1,2,3]
>>> b = [4, 5]
>>> a.extend(b)
>>> a
[1, 2, 3, 4, 5]
반면 extend()는 삽입 대상의 리스트를 풀어서 각각의 엘리먼트로 확장(Extend)해 삽입한다.
출처: https://ihp001.tistory.com/130 [효팍이의 프로그래밍:티스토리]
lst = [3,5,1,10]
print("lst :",lst)
print("len(lst) :",len(lst))
lst.append(10)
print("lst.append(10) : "+str(lst))
lst.pop()
print("lst.pop() :",lst)
lst.reverse()
print("lst.reverse() :",lst)
lst.sort()
print("lst.sort() :",lst)
lst.sort(reverse=True)
print("lst.sort(reverse = True) :",lst)
lst.remove(1)
print("lst.remove(1) :",lst)
lst.insert(1, 5)
print("lst.insert(1, 5) :",lst)
tmp = [6,2,4]
print("tmp :",tmp)
lst.extend(tmp)
print("lst.extend(tmp) :",lst)
print("lst.count(5) :",lst.count(5))
print("lst.index(5) :",lst.index(5))
del(lst[1:3])
print("del(lst[1:3]) :",lst)
9. 문자리스트에 lower 적용하기
a=[]
for i in range(3):
a.append(list(map(str,input().split())))
for i in range(3):
for j in range(5):
print(chr(ord(a[i][j])+32),end=' ')
print()
'''입력
A B C D E
F G H I J
K L M N O
'''
"""출력
a b c d e
f g h i j
k l m n o
"""
'프로그래밍 언어 > python' 카테고리의 다른 글
2512: 예산-이진탐색 (0) | 2025.03.28 |
---|---|
2805: 나무 자르기-이진탐색 (0) | 2025.03.26 |
240303. 정올 파이썬 리스트2 (1) | 2024.03.04 |
24.02.26 정올 문자열 (0) | 2024.03.01 |
10 미만의 홀수만 출력 (0) | 2024.02.24 |