<分区>
我有一个字符串列表,如下所示:
mylist = ['a', 'b', 'c', 'aa', 'bb', 'cc', 'aaa', 'bbb', 'ccc', 'aaaa', 'bbbb', 'cccc']
我只需要提取具有 k=4 个字符的字符串,因此输出将是:
minlist = ['aaaa', 'bbbb', 'cccc']
如何高效实现?
<分区>
我有一个字符串列表,如下所示:
mylist = ['a', 'b', 'c', 'aa', 'bb', 'cc', 'aaa', 'bbb', 'ccc', 'aaaa', 'bbbb', 'cccc']
我只需要提取具有 k=4 个字符的字符串,因此输出将是:
minlist = ['aaaa', 'bbbb', 'cccc']
如何高效实现?
最佳答案
这正是 filter
的情况类型功能用于:
>>> mylist = ['a', 'b', 'c', 'aa', 'bb', 'cc', 'aaa', 'bbb', 'ccc', 'aaaa', 'bbbb', 'cccc']
>>> minlist = list(filter(lambda i: len(i) == 4, mylist))
>>> minlist
['aaaa', 'bbbb', 'cccc']
filter
接受两个参数:第一个是函数,第二个是可迭代对象。该函数将应用于 iterable 的每个元素,如果函数返回 True
,该元素将被保留,如果函数返回 False
,该元素将被保留排除在外。 filter
返回根据传入的函数过滤这些元素的结果
作为旁注,filter
函数返回一个 filter
对象,它是一个迭代器,而不是一个 list
(这就是为什么包括显式 list
调用)。因此,如果您只是简单地遍历值,则不需要将其转换为 list
,因为这样会更有效率
关于python - 从字符串列表中删除短于 k 的字符串,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/61829924/