2017-12-31 185 views
0

list1という名前の新しいリストにループを追加して動作させていますが、などの便利なものを追加するにはどうすればいいですか?list1.append(...)ループのためにPythonで複数の行を実行する

word="abcdefg" 
list1=[] 
[list1.append(word[i]) for i in range(len(word))] 
print(list1) 

私はlist1.append(word[i]);print("working"),

+2

リストの内包表記は、ループのために実行するためではありません一行で、あなたはそれを完全に間違っている。あなたは理解力についての詳細を読むべきです –

+0

正確にはどういう意味ですか? *「役に立つ」*とは何でしょうか?あなたはどんなアウトプットを期待していましたか?*なぜ単に 'print(list(word))'だけではないのですか? – jonrsharpe

+0

これはコード例です(試してみてください) – Tim

答えて

1

リスト内包表記はありませんループを1行で実行する場合は、ちょうどです。彼らは非常に強力ですが、あなたはそれについて読む必要があります。次をご覧ください:Python List Comprehensions: Explained Visually

しかし、あなたのこのコードでは、文字列をリストに変換して印刷するだけです。

>>> print(list("abcdefg")) 
['a', 'b', 'c', 'd', 'e', 'f', 'g'] 
0

とを使用して試してみたあなたは、単に行うことができます -

list1 = [word[i] for i in range(len(word))] 

または

私はコメントで述べたように
list1 = [w for w in word] 
+0

だから私はw --here-にプリントを追加できません。 – Tim

+0

さて、このケースでは、Moinuddinの答えがより適しています –

-1

「コードの複数行」を行う関数を定義し、

word="abcdefg" 
list1=[] 
def add_and_print(character, container): 
    container.append(character) 
    print("adding", character) 
[add_and_print(character, list1) for character in word] 

内包表記が短いとで読みやすいべきである理解してそれを使用する:としてあなたは1行でそれを行うことができます複雑なものを避ける、一つの条件1回のコールと文のいずれかが最大であるべき最初の場所、 - あなたはなど、ループ複合体を必要とする場合には、発電機を作成

​​
関連する問題