[英]Only print out strings from a list that contain certain characters
让我们假设以下列表
my_list = ['bottle', 'coffee', 'insufficient', 'differential', 'cat']
我想编写一个函数,它接受两个参数作为输入,其中 m 是作为我想要查找的字符串的字符(例如 'ff'),n 是作为我想要输出的整数的字符串数。
所以def contains_strings('ff', 2):
应该输出:
['coffee', 'insufficient']
这两个词都包含 'ff',输出总共为 2。 第二个参数可以是随机的。 所以我不在乎函数是否输出。 ['咖啡','不足'] 或 ['差异','不足']
我只能编写一个能够输出以某些字符开头的单词的函数:
import random as _random
my_list = ['bottle', 'coffee', 'insufficient', 'differential', 'cat']
def starting_letters(m: str, n: int):
a = list(filter(lambda x: x.lower().startswith(m), my_list))
print(_random.choices(a, k=n))
starting_letters('c', 2)
输出:
['coffee', 'cat']
也许是这样的:
import random as _random
my_list = ['bottle', 'coffee', 'insufficient', 'differential', 'cat']
def contains_strings(m: str, n: int):
a = list(filter(lambda x: m in x.lower(), my_list))
return _random.sample(a, k=n)
print(contains_strings('ff', 2))
#['coffee', 'insufficient']
这是我将如何做到的:
import random as _random
my_list = ['bottle', 'coffee', 'insufficient', 'differential', 'cat']
def starting_letters(m: str, n: int):
a = list(filter(lambda x: m in x.lower(), my_list))
print(_random.sample(a, n))
注意我是如何用random.choices()
方法替换random.sample()
方法的。 原因是因为使用random.choices()
方法,您可能会在输出中多次从同一索引中获取元素,而random.sample()
方法确保每个返回的元素都来自列表的唯一索引。
您可以在此处使用regex
来匹配字符串中的模式
import re
import random as _random
my_list = ['bottle', 'coffee', 'insufficient', 'differential', 'cat']
def contains_pattern(pattern: str, n: int):
regex = re.compile(f'{pattern}')
a = [ans for ans in my_list if regex.search(ans)]
return _random.choices(a, k=n)
print(contains_pattern("ff",2))
# ['insufficient', 'coffee']
将随机导入为 _random
my_list = ['瓶子','咖啡','不足','差异','猫']
def starting_letters(m: str, n: int): a = list(filter(lambda x: m in x, my_list)) print(_random.choices(a, k=n))
起始字母('ff',2)
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.