代码之家  ›  专栏  ›  技术社区  ›  luna

我的列表不是元组,为什么错误会说其他的??:(

  •  -1
  • luna  · 技术社区  · 2 年前

    我的代码上一直有同样的相关错误,只是不知道问题出在哪里。尝试了所有我能在网上找到的,但似乎不起作用。这是一些代码。(我知道它可能没有优化,但这不是我的主要问题) 我也使用Python 3.9.1

    def init():         # créer la liste de données
        liste = []
        liste_lettre = []
        for x in range(len(texte)-1):
    
            lettre_init = []
            liste_poss = []
    
            if texte[x][0] not in liste_lettre:
    
                liste_lettre.append(texte[x][0])
                lettre_init = texte[x][0]
    
                for i in range(len(texte)-1):
                    for j in range(len(texte[i])):
    
                        if texte[i][j] == lettre_init:
    
                            if j == len(texte[i]):
                                liste_poss += (" ")
    
                            else:
                                liste_poss.append(texte[i][j+1])
                                print(hasattr(liste_poss, "append"))
                                
    
                    liste_poss = lettre_init, liste_poss
                    liste.append(liste_poss)
        return liste
    

    好的,解释一下我的代码是关于什么的:

    我正在尝试创建一个函数来存储给定文本中字母的连续迭代( texte )转换为数组( liste ). texte 是一个单词数组

    函数检查的每个单词的每个字母 texte 如果信件已经被核实。 如果没有,每次它看到给定的字母(存储在 lettre_init )总之 texte ,如果这是单词的最后一个字母,它将在列表中添加一个空格(“”) liste_poss ; 如果不是单词的最后一个字母,它将添加到 liste_poss 单词中的以下字母。 验证后 texte 完全,一个由经过验证的信件组成的列表( lettre_init )以及以下所有字母( liste_poss )添加到数组中 清单 . 最后, 清单 返回。

    我一直有错误 AttributeError: 'tuple' object has no attribute 'append' 对于线路 liste_poss.append(texte[i][j+1])

    我验证了 texte liste_poss 具有 hasattr(liste_poss, "append") 然后它回来了 True 我试过了 liste_poss += (texte[i][j+1]) 但是错误是 TypeError: can only concatenate tuple (not "str") to tuple .

    这个问题似乎与对象是元组有关,但我就是找不到问题出在哪里? 如果你有什么想法,请帮帮我,我迷路了。

    2 回复  |  直到 2 年前
        1
  •  0
  •   John Gordon    2 年前

    您创建 liste_poss 作为列表:

    liste_poss = []
    

    但在外层的最后一步 for 循环,则将其重新分配给元组:

    liste_poss = lettre_init, liste_poss
    

    是的,它是一个元组。

        2
  •  0
  •   Marie    2 年前

    以防您不知道,在您的行中保存用逗号分隔的元素

    liste_poss = lettre_init, liste_poss
    

    将创建一个元组。

    例如:

    enter image description here