繁体   English   中英

如何简化这个表达?

[英]How can I simplify this expression?

我想检查是否可以在另一个字符串中找到一些字符串及其小写变体,但是我的代码似乎毫无意义地复杂。

这可行,但是我想知道是否存在更干净的变体:

if ("aaa" in string or "Aaa" in string or "bbb" in string or "Bbb" in string) and C not in list:
   function()

你可以试试:

if any(s in string for s in ('aaa', 'Aaa', 'bbb', 'Bbb')) and C not in list:
   function()

使用正则表达式:

import re
if re.search('|'.join(['aaa', 'Aaa', 'bbb', 'Bbb']), string) and C not in mylist:
    function()

使用正则表达式范围,该范围可让您将来轻松修改可能的匹配项; 您还可以添加re.IGNORECASE以使匹配大小写不敏感:

    import re
    l = [ "Aaa", "bbb", "C" ]
    for ele in l:
         if (re.match(r'[ab]+', ele, re.IGNORECASE)):
             function()

注意:我只是想检查一下字符串和列表,但我不知道这样是否可行。

这是使用列表推导的另一种方法。 它虽然很长,但是有效:

if True in [1 for _ in ["aaa","Aaa","Bbb","bbb"] if _ in string] and C not in list:
    function()

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM