web-dev-qa-db-ja.com

「イテラブルにのみ参加できます」pythonエラー

イテラブルpythonエラー:

"反復可能のみ" Python error

しかし、それは「イテラブルを割り当てることができない」というエラーに関するものでした。私の質問はなぜpythonが私に言っているのかです:

 "list.py", line 6, in <module>
    reversedlist = ' '.join(toberlist1)
TypeError: can only join an iterable

私は何が間違っているのかわかりません!私はこのスレッドをフォローしていました:

str.split()が許可されていない文字列の単語の逆順

具体的にはこの答え:

>>> s = 'This is a string to try'
>>> r = s.split(' ')
['This', 'is', 'a', 'string', 'to', 'try']
>>> r.reverse()
>>> r
['try', 'to', 'string', 'a', 'is', 'This']
>>> result = ' '.join(r)
>>> result
'try to string a is This'

そして、コードをアダプターに入力させます。しかし、それを実行すると、上記のエラーが表示されました。私は完全な初心者なので、エラーメッセージの意味と修正方法を教えてください。

以下のコード:

import re
list1 = input ("please enter the list you want to print")
print ("Your List: ", list1)
splitlist1 = list1.split(' ')
tobereversedlist1 = splitlist1.reverse()
reversedlist = ' '.join(tobereversedlist1)
yesno = input ("Press 1 for original list or 2 for reversed list")
yesnoraw = int(yesno)
if yesnoraw == 1:
    print (list1)
else:
    print (reversedlist)

プログラムは、りんごや梨などの入力を受け取り、出力の梨やりんごを生成する必要があります。

助けていただければ幸いです!

12
Derek

splitlist1.reverse()は、多くのリストメソッドと同様にインプレースで動作するため、Noneを返します。したがって、tobereversedlist1はNoneなので、エラーになります。

splitlist1を直接渡す必要があります。

splitlist1.reverse()
reversedlist = ' '.join(splitlist1)
6
Daniel Roseman

文字列結合は、反復される接続オブジェクトを満たす必要があります(リスト、タプル)

splitlist1.reverse()はNoneを返し、Noneオブジェクトは反復をサポートしていません。

1
Eds_k