2012-04-03 14 views
3

空のリストから始めて、フレーズを入力するように指示します。各文字を配列の単一の要素として追加したいが、これを行う方法でリストのリストが作成される。リストのリストを作成せずにPythonリストに追加する

myList = [] 
for i in range(3): 
    myPhrase = input("Enter some words: ") 
    myList.append(list(myPhrase)) 
    print(myList) 

私が手:

Enter some words: hi bob 
[['h', 'i', ' ', 'b', 'o', 'b']] 

Enter some words: ok 
[['h', 'i', ' ', 'b', 'o', 'b'], ['o', 'k']] 

Enter some words: bye 
[['h', 'i', ' ', 'b', 'o', 'b'], ['o', 'k'], ['b', 'y', 'e']] 

が、私が望む結果は次のとおりです。

['h', 'i', ' ', 'b' ... 'o', 'k', 'b', 'y', 'e'] 

答えて

8

.append()への引数は、拡張され、抽出、またはいずれかの方法で反復処理されていません。リストの個々の要素すべてを別のリストに追加する場合は、.extend()を使用してください。

>>> L = [1, 2, 3, 4] 
>>> M = [5, 6, 7, 8, 9] 
>>> L.append(M) # Takes the list M as a whole object 
>>>    # and puts it at the end of L 
>>> L 
[0, 1, 2, 3, [5, 6, 7, 8, 9]] 
>>> L = [1, 2, 3, 4] 
>>> L.extend(M) # Takes each element of M and adds 
>>>    # them one by one to the end of L 
>>> L 
[0, 1, 2, 3, 5, 6, 7, 8, 9] 
+0

はい、これは私が探していたものです、ありがとう! :) –

3

私はあなたが間違った方法で問題を起こしていると思います。文字列は、その後、必要に応じてそれらの上に、後に文字の時間を繰り返すよう、あなたの文字列を格納することができます

foo = 'abc' 
for ch in foo: 
    print ch 

出力を:文字のリストとしてそれらを保存

a 
b 
c 

は不要と思われます。

+0

あなたはそうです。私はそれらを連結することができます、a + b、そして新しい文字列を配列として扱います。より大きなアプリケーションでは、この大きな文字列の各文字と一致する必要がある配列内にオブジェクトを保持しているので、配列内の各文字を別個のものとして必要と思っていました。 –

関連する問題