Python:在一行中应用lower()strip()和split()
在python中,定义变量的最快方法是什么?从拆分字符串到转换为小写和分条空格,还有什么方法 比如Python:在一行中应用lower()strip()和split(),python,python-3.x,Python,Python 3.x,在python中,定义变量的最快方法是什么?从拆分字符串到转换为小写和分条空格,还有什么方法 比如 args.where = 'Sn = Smith' a,v = args.where.lower().split('=').strip() 如果要在使用“拆分”创建列表后使用“带”,可以使用生成器表达式 where = 'Sn = Smith' a, v = (word.strip() for word in where.lower().split('=')) 如果要在使用“拆分”创建列表后使
args.where = 'Sn = Smith'
a,v = args.where.lower().split('=').strip()
如果要在使用“拆分”创建列表后使用“带”,可以使用生成器表达式
where = 'Sn = Smith'
a, v = (word.strip() for word in where.lower().split('='))
如果要在使用“拆分”创建列表后使用“带”,可以使用生成器表达式
where = 'Sn = Smith'
a, v = (word.strip() for word in where.lower().split('='))
您正在将一个字符串拆分为一个列表,并且无法删除该列表。您需要处理拆分中的每个元素:
a, v = (a.strip() for a in args.where.lower().split('='))
这将使用生成器表达式来处理每个元素,因此不会为剥离的字符串创建中间列表。如果表达式没有恰好生成两个值,Python将在这里抛出异常
在这种情况下,关注速度是。。毫无意义,除非您在一个非常大的元素体上执行此操作。不过,您可以使用map对上述内容进行微观优化:
但可读性方面的成本可能并不值得,不仅仅是两个元素。您正在将字符串拆分为一个列表,并且无法删除该列表。您需要处理拆分中的每个元素:
a, v = (a.strip() for a in args.where.lower().split('='))
这将使用生成器表达式来处理每个元素,因此不会为剥离的字符串创建中间列表。如果表达式没有恰好生成两个值,Python将在这里抛出异常
在这种情况下,关注速度是。。毫无意义,除非您在一个非常大的元素体上执行此操作。不过,您可以使用map对上述内容进行微观优化:
但可读性方面的成本可能并不值得,不仅仅是两个元素。您需要的是列表理解,以下是解决问题的示例
args.where = 'Sn = Smith'
a,v = [val.strip() for val in args.where.lower().split('=')]
您需要的是列表理解,以下是解决您的问题的示例
args.where = 'Sn = Smith'
a,v = [val.strip() for val in args.where.lower().split('=')]
如果变量中包含所有字符串,则可以使用re 输出:
sn
--
smith
如果变量中包含所有字符串,则可以使用re 输出:
sn
--
smith
无需使用列表理解,生成器表达式在不创建中间列表的情况下就可以了。感谢@MartijnPieters:的提示!无需使用列表理解,生成器表达式在不创建中间列表的情况下就可以了。感谢@MartijnPieters:的提示!有那么多人愿意帮忙解答。谢谢各位。太糟糕了,即使是一个活跃的问题仍然会得到反对票。这么多人愿意帮助回答。谢谢各位。太糟糕了,即使是一个活跃的问题仍然得到了否决票。