没有条件的字符串的布尔评估

时间:2017-02-24 16:39:05

标签: python string python-2.7 boolean substring

我正试图找出解决这一特殊挑战的方法,到目前为止,我很难过。

基本上,我要做的是:

  1. 检查字符串false
  2. 中是否存在子字符串s
  3. 如果false中存在s,请返回布尔值True
  4. 但是,我不允许使用任何条件语句

    也许有办法用对象做到这一点?

2 个答案:

答案 0 :(得分:1)

不使用if语句评估条件:

<强>真

>>> s = 'abcdefalse'
>>> 'false' in s
True

<强>题:

>>> s = 'abcdefals'
>>> 'false' in s
False

如果为假则返回空白:

>>> s = 'abcdefals'
>>> 'false' in s or ''
''

答案 1 :(得分:1)

如果某个地方需要str.__contains__,则总是In [69]: str.__contains__('**foo**', 'foo') Out[69]: True

filter

这可用于mapsorted(some_list, key=partial(str.__contains__,'**foo**'))

等内容
in

更常见的用例是使用理解为列表中的每个元素分配真值。然后我们可以在Python中使用In[70]: ['foo' in x for x in ['**foo**','abc']] Out[70]: [True, False] 关键字:

sorted(some_list, key=lambda x: 'foo' in x)

后者应该始终是首选。有边缘情况只能有一个功能。

但即便如此,你也可以传递一个lambda并使用语句:

#!/bin/bash

# some older test, doesn't work and complains and I get this message on command line: "QApplication::qAppName: Please instantiate the QApplication object first"
# I also can't enter text after command executes
#echo "Hello World!"
#exec konsole --noclose -e cat ~/.aliases 

# opens terminal but then I can't control terminal afterwards    
xterm -hold -e "echo Hello My World"

# didn't do anything
#exit 0

# didn't do anything except make me type exit an extra time where I executed my shell script
#$SHELL