Estaba tratando de hacer la cadena HELLO to OHELL en Python. Pero no pude encontrar ninguna forma de rotarlo sin trabajar con bucles. ¿Cómo codificarlo en solo 1-2 líneas para poder obtener el patrón deseado?
Aquí hay una forma:
def rotate(strg, n): return strg[n:] + strg[:n] rotate('HELLO', -1) # 'OHELL' Como alternativa, collections.deque ("cola de dos extremos") está optimizado para operaciones relacionadas con colas. Tiene un método de rotación () dedicado:
from collections import deque items = deque('HELLO') items.rotate(1) ''.join(items) # 'OHELL'Puede cortar y agregar cadenas:
>>> s = 'HELLO' >>> s[-1] + s[:-1] 'OHELL'Esto te da el último carácter:
>>> s[-1] 'O'y esto todo menos lo ultimo:
>>> s[:-1] 'HELL' Finalmente, agréguelos con + .
Esto es lo que uso para rotar cadenas en Python3:
Para rotar a la izquierda por n:
def leftShift(text,n): return text[n:] + text[:n]Para rotar a la derecha por n:
def rightShift(text,n): return text[-n:] + text[:-n]