将项目追加到列表理解中的列表不返回任何内容

时间:2019-06-13 03:09:02

标签: python

word_list = ['cat','dog','rabbit']
letter_list = []
letter_list = [letter_list.append(item_2) for item in word_list for item_2 in item if item_2 not in letter_list]
letter_list

我期望输出:['c','a','t','d','o','g','r','b','i'] 而实际输出为[无,无,无,无,无,无,无,无,无]

3 个答案:

答案 0 :(得分:0)

append返回None

如果字母的顺序无关紧要,则可以使用一组来过滤出已经看到的字母,并简化列表理解中的条件:

letter_list = list(set(letter for word in word_list for letter in word))

或者,因为set构造函数采用可迭代的方式,并且字符串是可迭代的,所以您可以这样做:

letter_list = list(set(''.join(word_list)))

答案 1 :(得分:0)

这是集合的用途(除非出于某种原因您需要保留订单)

set(letter for word in word_list for letter in word)
# => {'b', 'g', 't', 'a', 'o', 'd', 'i', 'r', 'c'}

如果您确实需要订单,则可以这样操作:

letter_list = []
for word in word_list:
    for letter in word:
        if letter not in letter_list:
            letter_list.append(letter)

答案 2 :(得分:0)

在这种情况下,您也可以使用extend代替append

>>> word_list = ['cat','dog','rabbit']
>>> letter_list = []
>>> for w in word_list:
        letter_list.extend(list(w))

>>> set(letter_list)
{'b', 'r', 'g', 'd', 't', 'o', 'a', 'i', 'c'}