在其他字符串列表中找到一个字符串

问题描述 投票:0回答:4

我正在尝试从原始列表创建一个新列表但是遇到了一些困难。

列表如下list1 = [training, bicycle, working, carrying, bite, eat]

我的名单中的新列表旨在仅对包含其中的单词进行整理,以便新列表看起来像这样[training, working, carrying]

代码如下所示

def ing(lists):
     b = "ing"
     for d in lists:
        if b in d:
            print(d)

        else:
           continue




    return (lists)

当使用list1运行它时,它几乎打印出list1而不是隔离包含ing的单词。 问题区域似乎是这条线

          if b in d:

是否有更好的方法来编写基于该列表中的单词的列表排序,因为这似乎是唯一的方法

python string substring
4个回答
0
投票

如果您想要进行方法调用 - 只需让您的方法返回一个新列表,其中包含满足搜索条件的旧列表元素。

就像是:

def ing(lists):
    b = "ing"
    new_list = []
    for d in lists:
        if b in d:
            print(d)
            new_list.append(d)

         else:
             continue



     return new_list

list1 = ['training', 'bicycle', 'working', 'carrying', 'bite', 'eat']
new_list = ing(list1)
print new_list

上面代码的列表输出是:

['培训','工作','携带']

使用列表理解也可以像@ cricket_007一样显示


1
投票

你永远不会制作新的清单,只打印东西

试试这个

list1 = ["training" , "bicycle", "working", "carrying", "bite" , "eat"]
ing = [x for x in list1 if "ing" in x]
print(ing)

或者如果你坚持要有一个功能

def filter_ing(l);
    return [x for x in l if "ing" in x]

0
投票

尝试这个(与你的代码相似的新方式)

    def ing(l):
        new=[]
        b="ing"
        for d in l:
            if b in d:
                new.append(d)#I am adding the wording ending with 'ing' to a new list
    #you were missing appending
        print(new)

    l= ['training','bicycle','working','carrying','bite','eat']
    ing(l)#calling_function

你缺少的是你给出的列表不包含字符串。如上所述,将它们放在字符串中使用''或“”。

此外,当你使用return时,应该有一些东西来保持特定的返回。你没有使用这样的东西。

毫无疑问,请随意通过评论询问。乐于帮助。


0
投票

您可以使用正则表达式:

import re
l= ['training','bicycle','working','carrying','bite','eat']
new_l = filter(lambda x:re.findall('ing$', x), l)

输出:

['training', 'working', 'carrying']
© www.soinside.com 2019 - 2024. All rights reserved.