0
特定の条件に基づいて名前のリストをフィルタリングするためのコードを作成しました。これをさらに減らし、コードの冗長性を排除できるかどうかを見たいと思っていました。ここに私のコードは次のとおりです。Pythonでこのコードの行数を減らす方法はありますか?
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