1. ホーム
  2. python

[解決済み] "Can only join an iterable" Python エラー

2022-01-25 05:55:26

質問

反復可能なpythonのエラーについて、この投稿をすでに見ました。

反復可能なもののみ可能" Pythonエラー

しかし、それはエラー "cannot assign an iterable" についてでした。私の質問は、なぜ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)

リンゴと梨のような入力を受けて、梨とリンゴを出力するプログラムです。

ご協力をお願いします。

解決方法は?

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

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

splitlist1.reverse()
reversedlist = ' '.join(splitlist1)