首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何创建文本文件中除包含重复字母的单词之外的所有单词的列表

如何创建文本文件中除包含重复字母的单词之外的所有单词的列表
EN

Stack Overflow用户
提问于 2017-05-14 20:06:29
回答 5查看 62关注 0票数 3

我正在尝试迭代一个列表,并将所有单词追加到一个新列表中,不包括有重复字母的单词。

示例:

代码语言:javascript
复制
words = ['cat', 'car', 'weevil', 'lizard', 'mammoth', 'cabbage', 'aardvaark']
newlist = []

for word in words:
    for letter in word
        if word.count(letter) > 1:
            pass
        else:
            newlist.append(word)

print(newlist)
# Result
['cat', 'cat', 'cat', 'car', 'car', 'car', 'weevil', 'weevil', 'weevil', 'weevil', 'lizard', 'lizard', 'lizard', 'lizard', 'lizard', 'lizard', 'mammoth', 'mammoth', 'mammoth', 'mammoth', 'cabbage', 'cabbage', 'cabbage', 'aardvaark', 'aardvaark', 'aardvaark']

代码实际上并不起作用,因为一个单词,比如weevil,将满足字母w的word.count(字母)条件,两个e传递两次,然后在两个e之后再满足三次,这就是为什么它在列表中出现了四次。

也许我从错误的角度来处理这件事,但我真的被如何做到这一点难住了。

EN

回答 5

Stack Overflow用户

发布于 2017-05-14 20:13:56

IIUC你的问题,你可以使用

代码语言:javascript
复制
>>> [w for w in words if len(set(w)) == len(w)]
['cat', 'car', 'lizard']

如果一个单词没有重复的字母,那么它的长度将是它的字母集合的长度。剩下的只是把它放到list comprehension中。

票数 4
EN

Stack Overflow用户

发布于 2017-05-14 20:14:21

尝试使用标准库提供的filter功能

代码语言:javascript
复制
words = ['cat', 'car', 'weevil', 'lizard', 'mammoth', 'cabbage', 'aardvaark']
newlist = list( filter(lambda x: unduplicate_letter(x), words) )

def unduplicate_letters(w):
    for letter in w:
       if w.count(letter) > 1:
           return False
    return True
票数 0
EN

Stack Overflow用户

发布于 2017-05-14 20:21:35

之所以发生这种情况,是因为它在每次检查字母时都会追加单词。在追加单词之前,您应该检查所有字母,因此可以添加一个check变量来查看所有字母是否都通过,然后再追加单词。例如:

代码语言:javascript
复制
    words = ['cat', 'car', 'weevil', 'lizard', 'mammoth', 'cabbage', 'aardvaark']
    newlist = []

    for word in words:
        check = 0
        for letter in word:
            if word.count(letter) > 1:
                check = 1

        if (check == 0):
            newlist.append(word)


    print(newlist)

输出:

代码语言:javascript
复制
['cat', 'car', 'lizard']
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/43963679

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档