Python 在字符周围交换列表/字符串

Python 在字符周围交换列表/字符串,python,Python,我想围绕指定索引交换列表或字符串的两部分,例如: ([1, 2, 3, 4, 5], 2) 应该回来 [4, 5, 3, 1, 2] 我应该只有一行代码,它对字符串有效,但我得到 只能将列表(而不是“int”)连接到列表 当我尝试使用列表时 def swap(listOrString, index): return (listOrString[index + 1:] + listOrString[index] + listOrString[:index]) 这是因为您采取了两个切

我想围绕指定索引交换列表或字符串的两部分,例如:

([1, 2, 3, 4, 5], 2)
应该回来

[4, 5, 3, 1, 2]
我应该只有一行代码,它对字符串有效,但我得到

只能将列表(而不是“int”)连接到列表

当我尝试使用列表时

def swap(listOrString, index):

    return (listOrString[index + 1:] + listOrString[index] + listOrString[:index])

这是因为您采取了两个切片和一个索引操作,并尝试连接。切片返回子列表,索引返回单个元素

将中间组件也设为切片,例如
listOrString[index:index+1]
,(即使它只是一个单元素切片),因此它保留被切片的内容的类型(成为该类型的单元素序列:

return listOrString[index + 1:] + listOrString[index:index+1] + listOrString[:index]

谢谢!那太好了sense@AdamSmith这个答案并不是为了保留被切片的类型而这样做的。例如,你的建议在一个文件上不起作用tuple@jamylak这是真的!尤其是因为它设计用于处理字符串,我真傻。谢谢:)@AdamSmith我认为
OP
使用的变量名不是一个好名字,应该是
序列
或something@jamylak坦率地说,就是
s
。或者使用注释:
defswap(s:(list,str),idx:int)->(list,str):返回s[idx+1:][s[idx:idx+1]+s[:idx]