我有一个字符串列表,如下所示:
mylist = ['a', 'b', 'c', 'aa', 'bb', 'cc', 'aaa', 'bbb', 'ccc', 'aaaa', 'bbbb', 'cccc']
Run Code Online (Sandbox Code Playgroud)
我只需要提取 k=4 个字符的字符串,所以输出将是:
minlist = ['aaaa', 'bbbb', 'cccc']
Run Code Online (Sandbox Code Playgroud)
如何有效实施?
尝试这个:
def get_minlist(my_list, k):
return [item for item in my_list if len(item) == k]
Run Code Online (Sandbox Code Playgroud)
您可以将其用作:
def get_minlist(my_list, k):
return [item for item in my_list if len(item) == k]
Run Code Online (Sandbox Code Playgroud)
结果:
['ab']
Run Code Online (Sandbox Code Playgroud)
代码是pythonic的,速度快,而且很容易理解。代码遍历列表中的项目,检查它们是否k长度,如果是,则保留它们。
这正是该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']
Run Code Online (Sandbox Code Playgroud)
filter有两个参数:第一个是函数,第二个是可迭代的。该函数将应用于可迭代的每个元素,如果函数返回True,则保留该元素,如果函数返回False,则排除该元素。filter根据传入的函数返回过滤这些元素的结果
作为旁注,该filter函数返回一个filter对象,它是一个迭代器,而不是 a list(这list就是包含显式调用的原因)。因此,如果您只是简单地迭代这些值,则无需将其转换为 a,list因为这样会更高效
| 归档时间: |
|
| 查看次数: |
173 次 |
| 最近记录: |