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'] 而实际输出为[无,无,无,无,无,无,无,无,无]
答案 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'}