我有这样的字符串列表:
words = ['hello', 'world', 'name', '1', '2018']
我在寻找最快的方法(python 3.6)来检测列表中的年份“单词”。例如,“2018”是年份。“1”不是。让我们定义可接受的年份范围为2000-2020。
可能的解决方案
检查该字是否为number('2018'.isdigit()
),然后将其转换为int,并检查是否为有效范围。
在python中最快的方法是什么?
我有这样的字符串列表:
words = ['hello', 'world', 'name', '1', '2018']
我在寻找最快的方法(python 3.6)来检测列表中的年份“单词”。例如,“2018”是年份。“1”不是。让我们定义可接受的年份范围为2000-2020。
检查该字是否为number('2018'.isdigit()
),然后将其转换为int,并检查是否为有效范围。
在python中最快的方法是什么?
2条答案
按热度按时间6ju8rftf1#
你可以建立一个有效年份的集合(以字符串的形式),然后遍历你想要测试的每个单词,检查它是否是一个有效年份:
正如Martijn Pieters在评论中提到的,集合是访问复杂度为O(1)的项的最快解决方案:
集合允许您在O(1)时间内测试成员资格,使用列表具有线性O(length_of_list)成本
正如您在注解中所看到的,有很多不同的方法可以生成
valid_years
的集合,只要您的数据结构是一个Set,您就可以使用最快的方法来完成您想要的操作。您可以在这里阅读更多:
cfh9epnr2#
用特殊的拆分字符将列表连接到一个字符串。使用正则表达式进行搜索。
例如: