web-dev-qa-db-fra.com

"Ne peut rejoindre qu'une itérative" erreur de python

J'ai déjà regardé ce post à propos d'erreurs de python itérables:

Erreur Python "Can only iterable"

Mais c'était à propos de l'erreur "ne peut pas assigner un itérable". Ma question est pourquoi le python me dit-il:

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

Je ne sais pas ce que je fais mal! Je suivais ce fil de discussion:

Inverser l'ordre des mots d'une chaîne sans str.split () autorisé

et plus précisément cette réponse:

>>> 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'

et adapter le code pour lui donner une entrée. Mais quand je l'ai couru, il a dit l'erreur ci-dessus. Je suis un novice complet, alors pourriez-vous me dire ce que signifie le message d'erreur et comment le corriger.

Code ci-dessous:

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)

Le programme doit prendre une entrée comme les pommes et les poires, puis produire une sortie poires et pommes.

L'aide serait appréciée!

6
Derek

splitlist1.reverse(), comme beaucoup de méthodes de liste, agit sur place et renvoie donc None. Donc, tobereversedlist1 est donc nul, d’où l’erreur.

Vous devriez passer splitlist1 directement:

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

string join doit satisfaire l'objet de connexion à itérer (liste, tuple)

splitlist1.reverse () renvoie Aucun, aucun objet ne supporte l'itération.

0
Eds_k