본문 바로가기
Python/Python_basic

[Python] 시퀀스 처리(For문, Lambda, List Comprehension)

by Mr.DonyStark 2023. 10. 30.

□ 시퀀스

  ○ 순서가 있는 데이터 자료 타입의 인덱스를 의미

  ○ 시퀀스 자료형이란 데이터 값이 연속적으로 이루어진 자료구조를 의미하며 List, Tuple, Str, Range 등이 있음

    → 리스트 함수 : cmp, len, max, min, list, append, count, extend, index, insert, pop, remove, reverse, sort 등

List Comprehension 형식: [조건 만족시 출력값 if 만족조건① else 불만족 조건② for i in list]

lambda 형식 및 사용이유

  ○ 기본 → lambda 매개변수 : 표현식

  ○ map함수 활용 → map(lambda 변수 : 표현식, 범위)

  ○ 인라인 작성으로 인하여 가독성이 증가됨

  ○ 함수 표현식 내용이 적을 때 람다 사용 권장

x = ['orange', 'Cherry', 'Apple', ' Kiwi', 'Banana', 'Strawberry']

x[0] #orange
x[1] #Cherry
x[2] #Apple
x[3] #Kiwi
x[4] #Banana
x[5] #Strawberry

#찾고자하는 값의 위치조회 : 변수명.index('값'))
print(x.index('Banana'))
#찾고자하는 값이 있는지 여부 확인 : 값 in 변수명
print('Banana' in x)

#인덱스 범위(길이)를 지정하여 값 조회 : 변수명(변수명.index(값, 시작범위, 종료범위))
print(x[x.index('Banana', 5, len(x))])

#시퀀스 슬라이싱 : 변수명[시작값:종료값:주기]
x = ['a','b','c','d','e','f','g','h','i','j','k','l','m']
print(x[3:5])
print(x[0:7:2])
print(x[0::2])
print(x[-9:-2])
print(x[-9:-2:2])
print(list(reversed(x[-9:-2:2])))    #리스트 값 역순 reversed : list(reversed(x[시작값:종료값:주기]))

y = ["grapes",'mango','orange','peach','apple','lime','banana','cherry','tomato','kiwi','blueberry']

#for문을 활용한 대문자 변환
new_list = [] #빈리스트
for i in range(len(y)) : #리스트 길이만큼 반복
    if y[i] == 'apple' or y[i] == 'kiwi':
        new_list.append(y[i].upper())         #append 함수 활용하여 값 추가 + 추가 될 값이 y[i]이면서 추가시 대문자 변환 upper 사용
print(f'new_list : {new_list}')

# map, lambda 활용filter를 활용한 대문자 변환
new2_list = map(lambda b: b.upper(), filter(lambda a: a == 'apple' or a =='kiwi', y)) #lambda 로 if문 기재
new2_list #필터 오브젝틈므로 list로 감싸서 형변환할것
new2_list = list(new2_list)
print(f'new2_list : {new2_list}')

# list comprehension
new3_list = [b.upper() for b in y if b == 'apple' or b == 'kiwi'] #if문에 맞는 값이 b에 담기며 대문자로 변환 / 풀어쓰면 반복문+조건문 쓴것과 동일
print(f'new3_list : {new3_list}')

#다음과 같이 30 ~ -10까지 -2씩 감소한 결과를 리스트로 출력
#range(start값,stop값, 주기)
x_list = []
for i in range(30,-12,-2):  #range(시작값, 종료값, 주기)
    x_list.append(i)
print(x_list)
#단순 list방식
x_list2 = list(range(30,-12,-2))
print(f'결과 : {x_list2}')

#아래와 같이 1부터 20까지 홀수*10, 짝수는 그대로 리스트 출력
#for문방법
even_num = []
odd_num = []

for i in range(1,21):
    if i % 2 == 0 :                 #2로 나누었을때 나머지가 0일 경우
        even_num.append(i)
    else:                           #나머지가 0이 아닌 경우
        odd_num.append(i * 10)
print(f'짝수값: {even_num}')
print(f'홀수값: {odd_num}')
#List Comprehension 방법
#[조건 만족시 출력값 if 만족조건① else 불만족 조건② for i in list]
new_even_num = [x * 10 if x % 2 != 0 else x for x in range(1,21)]
print(f'list comprehension: {new_even_num}')

#range & map & lambda
#람다함수 : 인라인 작성으로 인해 가독성 증가(함수 표현식 내용이 적을 때 람다사용 권장)
#아래와 같이 1부터 15까지 원소 * 10 결과는 문자열 리스트로 출력
#range
x= []
for i in range(1,16):
    x.append(str(i * 10))    #str() 문자열로 치환
print(f'range : {x}')
#map
map(lambda x : str(x * 10), range(1,16)) #x의 값에 하나하나 값이 들어감 + 이대로 출력하면 map 오브젝트로 출력됨  
list(map(lambda x : str(x * 10), range(1,16))) #따라서 list로 감싸서 출력
print(f'map : {list(map(lambda x : str(x * 10), range(1,16)))}')
#list comprehension[조건 만족시 출력값 if 만족조건① else 불만족 조건② for i in list]
lc_num = [str(a * 10) for a in range(1,16)]
print(f'list comprehension : {lc_num}')

'Python > Python_basic' 카테고리의 다른 글

[Python] 딕셔너리  (1) 2023.11.01
[Python] 중복제거(자료구조 set)  (0) 2023.11.01
[Python] 에러타입  (0) 2023.10.30
[Python] 변수와 데이터 타입, 형변환(+Input함수)  (0) 2023.10.03
[Python] 출력 Print  (0) 2023.10.03