2024-09-29 23:31:28 发布
网友
给出清单:
my_list = ['barrow', 'yellow', 'green', 'red', 'mellow']
我想在列表中找到与“****”匹配的单词(“*”是任意字母)。它应该返回“barrow”、“yellow”和“mellow”(单词包含在列表中,由六个字母组成,最后两个字母是“ow”)
试试这个:
>>> new_list = [w for w in my_list if (len(w) == 6 and w[-2:] == 'ow')] >>> new_list ['barrow', 'yellow', 'mellow']
[x for x in my_list if x.endswith('ow') and len(x) == 6]
这使用了一个列表理解,它接受以“ow”结尾的my_list的所有元素,长度为6,这正是您想要的。对于更一般的解决方案,您可以构建一个与所需字符串匹配的regex re,并使用re.match()作为条件
my_list
re
re.match()
解决问题的另一种方法是使用fnmatch,前提是干草堆是一个字符串列表。如果不是这样,您可能需要对字符串进行预转换
>>> import fnmatch >>> my_list = [2345, 3245, 2343, 8746] >>> fnmatch.filter(map(str, my_list), "2*4*") ['2345', '2343'] >>> my_list = ['barrow', 'yellow', 'green', 'red', 'mellow'] >>> fnmatch.filter(map(str, my_list), "*ow") ['barrow', 'yellow', 'mellow']
试试这个:
[x for x in my_list if x.endswith('ow') and len(x) == 6]
这使用了一个列表理解,它接受以“ow”结尾的
my_list
的所有元素,长度为6,这正是您想要的。对于更一般的解决方案,您可以构建一个与所需字符串匹配的regexre
,并使用re.match()
作为条件解决问题的另一种方法是使用fnmatch,前提是干草堆是一个字符串列表。如果不是这样,您可能需要对字符串进行预转换
相关问题 更多 >
编程相关推荐