016. Python

9150 단어 pythonpython

Python Advanced

list comprehension

  • [ 표현식 for 원소 in 반복 가능한 객체 ]
  • [ 표현식 for 원소 in 반복 가능한 객체 if문 ]

Assignment 1

  • 다음과 같은 도시목록의 리스트가 주어졌을때, 도시이름이 S로 시작하지 않는 도시만 리스트로 만들 때 리스트 컴프리헨션을 사용하여 함수를 작성해 보세요
cities = ["Tokyo", "Shanghai", "Jakarta", "Seoul", "Guangzhou", "Beijing", "Karachi", "Shenzhen", "Delhi" ]

citylst = [i for i in cities if i[0] ==  "S"]

print(citylst)

Assignment 2

  • 다음과 같은 도시, 인구수가 튜플의 리스트로 주어졌을때, 키가 도시, 값이 인구수인 딕셔너리를 딕셔너리 컴프리헨션을 사용한 함수를 작성해 보세요
population_of_city = [('Tokyo', 36923000), ('Shanghai', 34000000), ('Jakarta', 30000000), ('Seoul', 25514000), ('Guangzhou', 25000000), ('Beijing', 24900000), ('Karachi', 24300000), ('Shenzhen', 23300000), ('Delhi', 21753486)]

citydic = {k:v for k,v in population_of_city}

print(citydic)

Lambda expressions

Assignment

  • 다음과 같이 비밀번호의 길이와 대문자가 포함된것을 확인하는 간단한 함수가 있습니다
def check_password(password):
    if len(password) < 8:
        return 'SHORT_PASSWORD'

    if not any(c.isupper() for c in password):
        return 'NO_CAPITAL_LETTER_PASSWORD'

    return True
  • 풀이
lambdas = [ 
lambda password: 'SHORT_PASSWORD' if len(password) < 8 else 'NO_CAPITAL_LETTER_PASSWORD' if not any(c.isupper() for c in password) else True
]

def check_password_using_lambda(password):

    for f in lambdas:
        if f(password) is not None:
            return f(password)

    return True


print( check_password_using_lambda('123') )            # SHORT_PASSWORD
print( check_password_using_lambda('12356789f') )      # NO_CAPITAL_LETTER_PASSWORD
print( check_password_using_lambda('123456789fF') )    # True

좋은 웹페이지 즐겨찾기