我有一个日期字符串列表。例如,
x = ['2000-01-01', '2001-01-01', '2002-01-01']
我想用可选的下限和上限过滤这些字符串。我可以使用if语句来实现它。例如,
def filter_str(x, lower_bound = '', upper_bound = ''):
if lower_bound:
x = [y for y in x if y > lower_bound]
if upper_bound:
x = [y for y in x if y < upper_bound]
return x
我想知道是否有更优雅的方式来做到这一点?
我发现空字符串('')小于任何非空字符串。是否有比每个非空字符串更大的字符串?
这样,我可以简化filter_str到
def filter_str(x, lower_bound = '', upper_bound = LARGEST_STR):
return [y for y in x if y > lower_bound and y < upper_bound]
对于我的情况,列表中的所有字符串都以数字开头,所以我猜'a'比我列表中的任何字符串都大。但是如果我的列表对任何类型的字符串更通用,那么是否有最大的字符串?"
import pandas as pd dates = pd.to_datetime(your_str_dates) dates[(dates>=lower_bound)&(dates<=upper_bound)] print(dates)
ÿ应该是单个字符里面最大的字符串了,它比任何非他开头的字符串都大,因为他的ASCII码为255(1111 1111)字符串运算是以ASCII码比较的。 还有就是''小于任何字符串是对的,因为字符串在C语言中是以00结尾的在python中也一样。
版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。