0
특정 조건을 기반으로 이름 목록을 필터링하는 코드를 만들었습니다.이 문제를 줄이고 코드에서 중복성을 제거 할 수 있는지 확인하고 싶었습니다. 여기에 내 코드입니다 : 당신은 자신이 수행하는 함수의 이름과 같은 문자열을 해석 찾을 경우 파이썬에서이 코드의 줄을 줄이는 방법이 있습니까?
names1 = ["Jane", "Jake", "Bradley", "Bill", "Betty", "Kara", "Kris", "Jil"]
names2 = ["George", "Kate", "Karen", "Kurt", "Greg", "Gary"]
selection_criteria = ["full_list", "four_characters", "three_characters", "start_with_k", "start_with_z"]
def sublist (name_list, condition):
return_list = []
if condition == "full_list":
return name_list
if condition == "four_characters":
for name in name_list:
if len(name) == 4:
return_list.append(name)
if condition == "three_characters":
for name in name_list:
if len(name) == 3:
return_list.append(name)
if condition == "start_with_k":
for name in name_list:
if name[0] == 'K':
return_list.append(name)
if condition == "start_with_z":
for name in name_list:
if name[0] == 'Z':
return_list.append(name)
return return_list
for criteria in selection_criteria:
print(sublist(names1, criteria))
for criteria in selection_criteria:
print(sublist(names2, criteria))
코드가 작동하는 경우 여기에서 벗어난 것일 수 있습니다. 대신 https://codereview.stackexchange.com/에 제출하십시오. – Chris
나는 그것을 한 줄로 압축했다. https://i.fluffy.cc/lv6bGSsq8bVkFRzTwd7ZH0bS6KxP7qnH.html (https://github.com/csvoss/onelinerizer를 통해) –
@Chris가 말한대로한다. 처음에는 두 개의 '조건'유형 인'starts_with_ *'와'* _characters'를 봅니다. 이러한 루프의 논리를 각각'start_letter'와'name_length'를 받아들이는 함수로 추출 할 수 있습니다. – Carpetfizz