python-3.x 检测字符串列表中的年份

ldioqlga  于 2022-12-30  发布在  Python
关注(0)|答案(2)|浏览(209)

我有这样的字符串列表:

words = ['hello', 'world', 'name', '1', '2018']

我在寻找最快的方法(python 3.6)来检测列表中的年份“单词”。例如,“2018”是年份。“1”不是。让我们定义可接受的年份范围为2000-2020。

可能的解决方案

检查该字是否为number('2018'.isdigit()),然后将其转换为int,并检查是否为有效范围。
在python中最快的方法是什么?

6ju8rftf

6ju8rftf1#

你可以建立一个有效年份的集合(以字符串的形式),然后遍历你想要测试的每个单词,检查它是否是一个有效年份:

words = ['hello', 'world', 'name', '1', '2018']
valid_years = {str(x) for x in range(2000,2021)}

for word in words:
    if word in valid_years:
        print word

正如Martijn Pieters在评论中提到的,集合是访问复杂度为O(1)的项的最快解决方案:
集合允许您在O(1)时间内测试成员资格,使用列表具有线性O(length_of_list)成本

    • 编辑**:

正如您在注解中所看到的,有很多不同的方法可以生成valid_years的集合,只要您的数据结构是一个Set,您就可以使用最快的方法来完成您想要的操作。
您可以在这里阅读更多:

cfh9epnr

cfh9epnr2#

用特殊的拆分字符将列表连接到一个字符串。使用正则表达式进行搜索。
例如:

word_tmp = " ".join(words)
re.search("\b20[0-2]\d\b", word_tmp)

相关问题