使用切片过滤非常大的域列表

时间:2018-05-01 05:21:27

标签: python string slice

我正在过滤一个非常大的子域名列表,我试图创建一个变量切片。这个列表非常大,所以我想在大多数" pythonic"将性能优化的方法。

该方法的工作原理如下:

假设采用各种格式的域列表:

a.b.c.domain.com
d.e.domain.com
f.domain.com

如果用户希望按深度为1进行过滤,则只会显示格式为f.domain.com的域。如果用户选择深度为2,则会显示格式为f.domain.comd.e.domain.com的域。

我相信这可以用类似s.join(a.split(".")[len(a.split(".")) - 4:])的东西来实现,但它看起来过于复杂,我想知道是否有一种使用切片的方式,我错过了这种方式非常理想用例?

2 个答案:

答案 0 :(得分:1)

这应该这样做 -

domains = [
"a.b.c.domain.com",
"d.e.domain.com",
"f.domain.com" ]

def filter_domains(domains, n):
    return list(filter(lambda x: x.count('.') <= n+1, domains))

print (filter_domains(domains, 2))
# prints ["d.e.domain.com", "f.domain.com"]

答案 1 :(得分:0)

不确定性能,但与@ PrasadK的答案类似:

Fax Number

如果您的列表太长(也取决于您如何加载域名),上面的内容很容易转换为生成器