如何在python中以列表模式取消缓冲函数?

如何在python中以列表模式取消缓冲函数?,python,function,Python,Function,o是取消洗牌的标准模式 o = [2,1,3,0] a = 'abcd' def un_suffle(s,o): s = 'bcda' return ''.join([s[i] for i in o]) print(un_suffle(s,o)) 我的输出是: dcab # i want to make it abcd in output 第一个问题是's'不是基于您在'o'中表达的顺序的'a'的混洗版本 第二个问题是,如果要取消洗牌,则应该从洗牌的顺序向后遍历列表“o” 试着

o是取消洗牌的标准模式

o = [2,1,3,0]
a = 'abcd'

def un_suffle(s,o):
   s = 'bcda'
   return ''.join([s[i] for i in o])
print(un_suffle(s,o))
我的输出是:

dcab # i want to make it abcd in output

第一个问题是's'不是基于您在'o'中表达的顺序的'a'的混洗版本

第二个问题是,如果要取消洗牌,则应该从洗牌的顺序向后遍历列表“o”


试着先做一个洗牌函数,然后再做一个非洗牌函数。您所处的轨道是正确的。

这将给您一个错误,打印函数中未定义“n”。您希望它是“abcd”,但变量a已经是“abcd”,那么,你的观点是什么呢?我的观点不是让bcda的反缓冲变成abcd基于oBTW列表:你应该定义
s='bcda'
外部函数将其作为参数发送。要将
s
反缓冲到
a
你需要
o=[3,0,1,2]
并将
a
反缓冲到
c
你需要
o=[1,2,3,0]
在这两种情况下,您的
o
中的值都是错误的。顺便说一句:对于
s='bcda'
,您可以执行
s[-1:]+s[:-1]
来获得
a
,因为它只需要将最后一个元素移到第一位。