2017-04-01 74 views
-1

我在python 中制作anagram,但是当我调用'list'function时,它不起作用。请帮忙。 我正在尝试将'str'更改为'list' ,但它不起作用。我真的不知道为什么列表中的Python类型错误

def generate_anagram(s): 
    a=s[0:len(s)-1] 
    b=s[len(s)-1] 
    if len(a)==1: 
     return make(a,b) 
    else: 
     return make(generate_anagram(a),b) 

def make(s1,s2): 
    list=[] 
    l=len(s1) 
    q=list(s1) 
    w=list(s2) 
    ss="" 
    for i in range(l): 
     if(len(q)>l): 
      q.remove(w) 
     q.insert(i,w) 
     list+=q 

    for i in range(len(list)): 
     ss+=list[i] 
    return ss 


if __name__ == "__main__": 

    print(generate_anagram("anagram")) 
+0

因为你用变量名“list”覆盖了内建函数list()' – TerryA

回答

0

代码

list=[] 
l=len(s1) 
q=list(s1) 
w=list(s2) 

是问题,因为第一行会“隐藏”通过创建一个名为list一个局部变量的标准功能list。这意味着最后两行不会调用Python的list函数。

+0

真的很感谢你。 – babababam

+0

我可以再问一次吗?我想要'列表[我]''str',但是,ss + = list [i] dosen't工作..我如何使列表类型为str类型? – babababam

+0

@babababam:在Python''“”.join(L)'其中'L'是字符列表连接所有这些字符并返回结果字符串。 – 6502