2016-05-18 13 views
0

私は現在、文字列を受け取り、リストに変換し、すべての母音を削除するPythonスクリプトを作成しています。次に、最終結果を文字列として出力します。しかし、私が使用している反復関数は、母音であろうとなかろうと、すべての結果を出力しています。私は、子音を元に戻してみることを試みたが、役に立たなかった。以下は私が使っていたコードです。関数の反復

string = input("#: ") 
new_list = [] 

for x in list(string): 
    if [x.lower() == y for y in list("aeiou")]: 
     global new_list 
     new_list.append(x) 

print(''.join(new_list)) 

いずれの洞察も認められます。

答えて

2

この行は:

if [x.lower() == y for y in list("aeiou")] 

は、5つの要素(それぞれがTrue又はFalseである)とのリストを作成します。 x'e'であれば母音ではありません

[False, True, False, False, False] 

x場合例えば
、それはそう、それは

[False, False, False, False, False] 

任意の非空のリストが真のリストを作成し、リストを作成します。 ifの条件を満たす。


何あなたが尋ねることを意味する "x.lower()は母音の私のリストのいずれかのyためyに等しいのですか?" され、これである:簡潔

if any(x.lower()==y for y in list("aeiou")): 

以上:

if x.lower() in "aeiou": 

ではないの母音であるかどうかを確認する場合は、次のようになります。

if x.lower() not in "aeiou": 
+0

おかげで多く、これは私のためにそれを固定:) – Kamg300

1

私はあなたがそこにやろう何をしたか全くわからないが、これはそれをしない...

string = input("#: ") 
print(''.join([x for x in string if x.lower() not in "aeiou"])) 

#: Hello there! 
Hll thr! 

アンさらに効率的なアプローチは次のようになります。

print(input("#: ").translate(str.maketrans("","","aeiou"))) 
+0

は、このくらいで圧縮することができ気づいていませんでした!どうもありがとう。 – Kamg300

0

まず最初に、文字列だけで一覧表示する文字列を型キャストする必要はありませんので、リストのようなイテレータです。

s = "your_string_goes_here".lower() 

s = s.replace('a', '') 
s = s.replace('i', '') 
s = s.replace('e', '') 
s = s.replace('o', '') 
s = s.replace('u', '') 
print s 
+0

これは、リストを5回スキャンします。 –