리스트와 for 문
for문은 다양한 컬렉션(리스트, 튜플, 딕셔너리, 세트 등)과 함께 사용할 수 있습니다.
li1 = ['apple', 'banana', 'orange', 'melon']
for i in li1:
print(i, end=' ')
li1안에 있는 요소들을 하나씩 띄어서 나타내줘라 라는 뜻
apple banana orange melon
###문제 1
score 리스트에 저장된 점수가 60점 이상인 학생이 몇명인지 확인하는 프로그램을 작성해보자
*score = [90,30,50,60,80,70,100,40,20,10]
score=[90,30,50,60,80,70,100,40,20,10]
count= 0
for i in score:
if i>=60:
count +=1
print(f'60점 이상인 학생의 수는 {count}명입니다')
for문 짜기 전 위에서 점수가 있는 리스트를 나타내주고, 60점 이상이 몇 명인지 알려주는 변수를 지정해 놓고 코딩에 들어간다.
딕셔너리와 for 문
dic1 = {'no':1, 'userid':'apple', 'name':'김사과', 'hp':'010-1111-1111'}
for i in dic1: # 키만 복사해줌
print(i,end=' ')
dic1 = {'no':1, 'userid':'apple', 'name':'김사과', 'hp':'010-1111-1111'}
for i in dic1.keys():
print(i,end=' ')
no userid name hp
코드를 저렇게 짜게 되면 키 값만 복사해준다.
dic1 = {'no':1, 'userid':'apple', 'name':'김사과', 'hp':'010-1111-1111'}
for i in dic1.values():
print(i, end=' ') # 값만 복사
1 apple 김사과 010-1111-1111
값만 복사해 줌
dic1 = {'no':1, 'userid':'apple', 'name':'김사과', 'hp':'010-1111-1111'}
for i in dic1:
print(dic1[i],end=' ') #dic1['no']
dic1 = {'no':1, 'userid':'apple', 'name':'김사과', 'hp':'010-1111-1111'}
for i in dic1:
print(dic1.get(i),end=' ') #dic1.get('no')
1 apple 김사과 010-1111-1111
dic1 [i]는 각 키에 해당하는 값을 나타냅니다.
dic1.get(i) 도 같은 뜻이다. 각 키에 해당하는 값을 나타내준다
dic1 = {'no':1, 'userid':'apple', 'name':'김사과', 'hp':'010-1111-1111'}
for key,value in dic1.items():
print(key,value)
no 1
userid apple
name 김사과
hp 010-1111-1111
. items()메서드는 딕셔너리에서 사용되는 메서드입니다. 이 메서드는 딕셔너리의 키와 값을 쌍으로 하는 튜플들을 반환합니다.
컴프리헨션(Comprehension)
컴프리헨션(Comprehension)은 파이썬에서 리스트, 세트, 딕셔너리 등의 컬렉션을 간단하게 생성하거나 변형하는 방법 중 하나입니다. 컴프리헨션은 반복문과 조건문을 사용하여 간결하게 컬렉션을 생성하는 기법으로, 코드를 더 간단하고 가독성 좋게 작성할 수 있도록 도와줍니다.
n = 10
result = [0 for i in range(n)]
print(result)
result = [i for i in range(n)]
print(result)
[0, 0, 0, 0, 0, 0, 0, 0, 0, 0]
[0, 1, 2, 3, 4, 5, 6, 7, 8, 9]
첫 번째 결괏값은 for문 앞에 0 있기 어떤 게 오든 무조건 0이 된다.
반면에 두 번째는 for문 앞에 i가 있기 때문에 두번째 결괏값처럼 0~9까지의 값이 나온다
arr = [10,20,30,40,50,60,70,80,90,100]
result = [i for i in arr]
print(result)
arr = [10,20,30,40,50,60,70,80,90,100]
result = [i*2for i in arr]
print(result)
[10, 20, 30, 40, 50, 60, 70, 80, 90, 100]
[20, 40, 60, 80, 100, 120, 140, 160, 180, 200]
첫 번째 나온 값에서 각각의 요소에 곱하기 2를 해준다는 뜻이다.
arr = ['apple', 'banana', 'orange','melon']
result = [len(str1) for str1 in arr]
print(result)
[5, 6, 6, 5]
arr라는 변수 안에 있는 문자열의 길이를 나타내달라는 뜻이다.
result = [n for n in range(10) if n%2==0]
print(result)
[0, 2, 4, 6, 8]
0~9까지 2로 나누었을 때 나머지가 0인 것들만 추출해달라는 뜻
arr = [-1, 0,-4, 24, 5, -10, 2, 20]
#양수는 리스트에 그대로 저장하고, 음수는 0으로 변환해서 저장
result=[n if n>0 else 0 for n in arr]
print(result)
[0, 0, 0, 24, 5, 0, 2, 20]
arr =[]
for i in range(1,4):
for j in range(1,3):
arr.append(i*j)
print(arr)
arr=[i*j for i in range(1,4) for j in range(1,3)]
print(arr) # 해석만 가능할수 있게
[1, 2, 2, 4, 3, 6]
. append()는 파이썬 리스트(list)에 사용되는 메서드(method) 중 하나입니다. 이 메서드는 리스트의 끝에 새로운 요소를 추가하는 데 사용됩니다.
append를 사용해 주었기 때문에 결과 저렇게 가로로 똑바로 나온다
두 개의 코딩다 똑같은 값이 나온다
세트 컴프리헨션
세트 컴프리헨션은 새로운 세트를 생성하는 데 사용됩니다. 기존 세트의 각 요소를 반복하면서 조건을 적용하여 새로운 세트를 생성할 수 있습니다.
numbers = [1,2,3,4,5,2,3,4]
unique_numbers = set(numbers)
print(unique_numbers)
set 를적용하니 반복되는 요소들은 빼고 정리되어 나온다.
numbers = [1,2,3,4,5,2,3,4]
unique_numbers = {x for x in numbers}
print(unique_numbers)
{1, 2, 3, 4, 5}
딕셔너리 컴프리헨션
딕셔너리 컴프리헨션은 새로운 딕셔너리를 생성하는 데 사용됩니다. 기존 딕셔너리의 키와 값을 반복하면서 조건을 적용하여 새로운 딕셔너리를 생성할 수 있습니다.
names = ["apple", "banana", "orange"]
name_lengths = {name:len(name) for name in names }
print(name_lengths)
{'apple': 5, 'banana': 6, 'orange': 6}