2016-10-06 3 views
-1

長さを問わず、リストと照合するチェッカーを使用する関数を作成しようとしています。単語を確認して印刷するときは、大文字と小文字を区別しないでください。リストに対して変数をチェックし、そのリスト内の単語が変数で始まるかどうかを調べる

Input= startsWith('a',['apple','ApPle','orange','Apple','kiwi','apricot'])

出力以下の例は:

apple 
ApPle 
Apple 
apricot 

しかし、それはすべて小文字で、リスト内のすべての文字列を出力します。

def startsWith(checker,lister): 

    checker.lower() 
    size = len(lister) 
    i=0 
    checklength = len(checker) 
    lister = [element.lower() for element in lister] 
    while(i<size): 
     checkinlist = lister[i] 
     if(checkinlist[0:checklength-1] in checker): 
      # this is just to test to see if the variables are what i need 
      # once the if statement works just append them to a new list 
      # and print that 
      print(lister[i]) 

     i=i+1 
+0

私が手 'NameError:私はあなたのスクリプトを実行するときに名前 'チェッカー' は、defined'されていません。 –

+0

@ tommy.carstensen thatsあなたは関数定義を含まなかったので、現時点で質問に正しく書式設定されていません。 – GreenAsJade

+0

...これで修正されました。 – GreenAsJade

答えて

0
def startsWith(checker,lister): 

    for i in range(len(lister)): 
     words = lister[i].lower() 
     if(words.startswith(checker)): 
      print(lister[i]) 

def main(): 
    startsWith('a',['apple','ApPle','orange','Apple','kiwi','apricot']) 
main() 

OUTPUT

apple 
ApPle 
Apple 
apricot 
>>> 
1

は、ここで問題

lister = [element.lower() for element in lister] 

listerのルートは今だけあなたがして印刷する小文字の文字列が含まれています。 を確認するまで、lower()を延期する必要があります。


何かの長さを確認する必要はありません。あなたは、むしろ小文字に変換されたこれらの要素の新しいコピーに比較を行う、listerのオリジナル要素を変異させるべきではありませんfilter

def startsWith(checker, lister): 
    return list(filter(lambda x: x.lower().startswith(checker.lower()), lister)) 

for x in startsWith('a',['apple','ApPle','orange','Apple','kiwi','apricot']): 
    print(x) 

出力

apple 
ApPle 
Apple 
apricot 
0

を使用することができます。

これは単一のリストの理解で行うことができます。

def startsWith(checker, lister): 
    cl = checker.lower() 
    return [s for s in lister if s.lower().startswith(cl)] 

Input= startsWith('a',['apple','ApPle','orange','Apple','kiwi','apricot']) 

for i in Input: 
    print(i) 

出力:

apple 
ApPle 
Apple 
apricot 
関連する問題