将项附加到列表中的列表

2024-06-02 06:36:28 发布

您现在位置: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'] 而实际输出是[无,无,无,无,无,无,无,无,无]


Tags: inforifnotitemlistcatword
3条回答

在这种情况下,也可以使用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'}

append返回None

如果字母的顺序无关紧要,您可以使用集合来过滤已经看到的字母,并简化列表中的条件:

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

或者,由于set构造函数采用iterable,并且字符串是iterable,因此可以执行以下操作:

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

这就是集合的用途(除非出于某种原因需要保留顺序):

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)

相关问题 更多 >