Python:附加到列表

时间:2013-01-18 01:46:50

标签: python list python-2.7

我正在研究定义测试人员(你输入单词,他们的演讲部分和每个人的同义词,并对它们进行测试)。我遇到的问题是得到这个词的部分:

   def get_word(): # this is in another function, that's why it is indented
      import easygui as eg
      word_info = eg.multenterbox(msg = 'Enter in the following information about each word.'
                                , title = 'Definition Tester'
                                , fields = ['Word: ', 'Part of Speech: ', 'Synonyms (separated by spaces): ']
                                , values = []
                                )
      return word_info
   for i in range(n):
      my_list = get_word()
      print my_list # for testing
      word, pOS, synonyms = my_list[0], my_list[1], my_list[2]
      word = word.capitalize()
      synonyms = synonyms.split(', ')
      words_list += word
      print word # for testing
      test_dict[word] = [pOS, synonyms]
   print words_list # for testing

然而,words_list最终成为list(word)函数应用于它们之后的单词 - 我不知道为什么。

例如:如果唯一的字词是'word',则words_list原来是['w', 'o', 'r', 'd']。如果有两个单词('dog','cat'),words_list原来是['d', 'o', 'g', 'c', 'a', 't']。 这是我的输入(进入get_word()):单词:'myword',词性:'n',同义词:'同义词,定义'。

这是我得到的输出:

['myword', 'n', 'synonym, definition']
Myword
['M', 'y', 'w', 'o', 'r', 'd'] # Why does this happen?

这是我的程序唯一的错误...如果我能得到一些关于如何解决这个问题以及出了什么问题的意见,我将不胜感激。谢谢!

2 个答案:

答案 0 :(得分:6)

这是因为这一行:

words_list += word
列表中的

+=用于添加另一个列表中的所有元素。碰巧,Python字符串也像字符列表一样工作,因此您将每个字符添加到列表中作为其自己的元素。

你想要这个:

words_list.append(word)

用于向末尾添加单个元素。

答案 1 :(得分:0)

在搞乱之后,我自己想出了问题,所以我想我应该把它放在任何有类似事情的人身上:

而不是words_list += word,它应该是:words_list.append(word)

或者,就是我所做的,你可以这样做:words_list += [word]。现在,wordlist对象,因此它将添加到上一个列表中。