如何获得适当的布尔结果?

时间:2019-08-22 17:12:19

标签: python-3.x list list-comprehension

我已经写了一些代码,这只是一小段

x = ['apple, iphone','samsung, galaxy','oneplus, 10pro']
print('apple' in x) 

由于苹果已经存在于x中,因此如何使该语句为true,所以我仍然保持False作为布尔值。

3 个答案:

答案 0 :(得分:4)

in运算符应用于此处的列表时,它将在列表中查找完全匹配。您的代码返回假,因为'apple'不在列表中,'apple, iphone'在列表中。要检查列表中每个元素的子字符串'apple',可以使用列表理解。像这样:

x = ['apple, iphone','samsung, galaxy','oneplus, 10pro']
print(True in ['apple' in s for s in x]) 

第二行所做的是使用列表理解来构建布尔值列表,以指示子字符串'apple'是否在该元素中。然后,它检查True是否在结果列表中。

或不使用in运算符:

x = ['apple, iphone','samsung, galaxy','oneplus, 10pro']
print(any(['apple' in s for s in x])) 

如果可迭代元素中的任何元素为any,则True内置函数将返回true。

答案 1 :(得分:0)

x = ['apple, iphone','samsung, galaxy','oneplus, 10pro']
print(True in ('apple' in d for d in x))

答案 2 :(得分:0)

也许使用这样的功能:

IsItemInList(item, list):
     for x in list:
          if x == item:
                return True
      return False

当然可以确定有一种更清洁的方法,但这是我的第一个猜测。众所周知,第一个主要是最糟糕的。