array - Lista inversa de Python
reverse list python (8)
Esta pregunta ya tiene una respuesta aquí:
- Invierta una cadena en Python 20 respuestas
Estoy intentando invertir una cadena y usar el código siguiente, pero el valor de la lista inversa resultante es Ninguno.
El código:
str_a = ''This is stirng''
rev_word = str_a.split()
rev_word = rev_word.reverse()
rev_word = ''''.join(rev_word)
Devuelve TypeError
. ¿Por qué?
Basado en comentarios y otras respuestas:
str_a = ''this is a string''
rev_word = '' ''.join(reversed(str_a.split()))
El método de encadenamiento funciona en Python después de todo ...
El ciclo for itera la cadena desde el final (última letra) hasta el inicio (primera letra)
>>> s = ''You can try this too :]''
>>> rev = ''''
>>> for i in range(len(s) - 1, -1, -1):
... rev += s[i]
>>> rev
'']: oot siht yrt nac uoY''
Esta es mi forma favorita de invertir una cadena:
stra="This is a string"
revword = stra[::-1]
print(revword) #"gnirts a si sihT
o, si quieres revertir el orden de las palabras:
revword = " ".join(stra.split()[::-1])
print(revword) #"string a is This"
:)
La lista inversa se puede hacer utilizando más de una forma.
Como se mencionó en las respuestas anteriores, dos son muy prominentes, uno con función reverse()
y dos con función slicing. Estoy dando algunas ideas sobre cuál preferiríamos. Siempre debemos usar reverse()
función reverse()
para revertir una lista de Python. Dos razones, una reversión in situ y dos más rápidas que otras. Tengo algunas cifras para apoyar mi respuesta,
In [15]: len(l)
Out[15]: 1000
In [16]: %timeit -n1 l.reverse()
1 loops, best of 3: 7.87 µs per loop
In [17]: %timeit -n1 l[::-1]
1 loops, best of 3: 10 µs per loop
Para la lista de 1000 enteros, reverse()
función reverse()
funciona mejor en comparación con el corte.
Para referencia futura cuando un objeto tiene un método como [].reverse()
generalmente realiza esa acción en el objeto (es decir, la lista se ordena y no devuelve nada, ninguno) en contraste con funciones incorporadas como sorted
que realizan una acción en un objeto y devuelve un valor (es decir, la lista ordenada)
Varias inversiones en una cadena:
instring = ''This is a string''
reversedstring = instring[::-1]
print reversedstring # gnirts a si sihT
wordsreversed = '' ''.join(word[::-1] for word in instring.split())
print wordsreversed # sihT si a gnirts
revwordorder = '' ''.join(word for word in instring.split()[::-1])
print revwordorder # string a is This
revwordandorder = '' ''.join(word[::-1] for word in instring.split()[::-1])
print revwordandorder # gnirts a si sihT
.reverse()
devuelve None
. Por lo tanto, no debería asignarlo a una variable.
Use esto en su lugar:
stra = ''This is a string''
revword = stra.split()
revword.reverse()
revword=''''.join(revword)
He ejecutado el código en IDEOne para que pueda ver el resultado. (También stringaisThis
cuenta que la salida es stringaisThis
; es posible que desee utilizar '' ''.join(revword)
, con un espacio, en su lugar.)
También tenga en cuenta que el método que ha proporcionado solo invierte las palabras , no el texto . @ ron.rothman proporcionó un enlace que detalla cómo invertir una cadena en su totalidad.
>>> s = ''this is a string''
>>> s[::-1]
''gnirts a si siht''
>>> ''''.join(reversed(s))
''gnirts a si siht''