我正在尝试从原始列表创建一个新列表但是遇到了一些困难。
列表如下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:
是否有更好的方法来编写基于该列表中的单词的列表排序,因为这似乎是唯一的方法
如果您想要进行方法调用 - 只需让您的方法返回一个新列表,其中包含满足搜索条件的旧列表元素。
就像是:
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一样显示
你永远不会制作新的清单,只打印东西
试试这个
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]
尝试这个(与你的代码相似的新方式)
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时,应该有一些东西来保持特定的返回。你没有使用这样的东西。
毫无疑问,请随意通过评论询问。乐于帮助。
您可以使用正则表达式:
import re
l= ['training','bicycle','working','carrying','bite','eat']
new_l = filter(lambda x:re.findall('ing$', x), l)
输出:
['training', 'working', 'carrying']