“只能加入一个可迭代的”python错误

新手上路,请多包涵

我已经看过这篇关于可迭代 python 错误的文章:

“只能迭代”Python 错误

但那是关于错误“无法分配一个可迭代的”。我的问题是为什么 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)

该程序应该接受像苹果和梨这样的输入,然后产生输出梨和苹果。

帮助将不胜感激!

原文由 Derek 发布,翻译遵循 CC BY-SA 4.0 许可协议

阅读 754
2 个回答

splitlist1.reverse() 与许多列表方法一样,就地执行,因此返回 None 。所以 tobereversedlist1 因此是无,因此是错误。

你应该直接传递 splitlist1

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

原文由 Daniel Roseman 发布,翻译遵循 CC BY-SA 3.0 许可协议

string join 必须满足要迭代的连接对象(list, tuple)

splitlist1.reverse() 返回 None,None 对象不支持迭代。

原文由 Eds_k 发布,翻译遵循 CC BY-SA 3.0 许可协议

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题