我正在尝试编写一个脚本的一部分,该脚本将评估字符串中是否存在两个(或更多)给定字符中的任何一个。似乎逻辑OR运算符在我的IF / IN语句中始终为true。有什么想法吗?
#!/usr/bin/python
mylist = ['abc', 'def']
for mystring in mylist:
if 'a' in mystring:
print mystring
if 'a' or 'b' in mystring:
print mystring
prints:
abc
abc
def
答案 0 :(得分:0)
您的代码中的问题是,'a'
始终评估为True
,您说:" 'a'
为真或'b' in mystring
为真"
def is_chars_in_strings(strings, chars):
answer = []
for string in strings:
a = False
for char in chars:
if char in string:
a = True
break
if not a:
answer.append(string)
return answer
print (is_chars_in_strings(['abc', 'def'], 'ab'))
答案 1 :(得分:0)
声明:if 'a' or 'b' in mystring
与:if ('a') or ('b' in mystring)
相同,因为if 'a':
始终为真,因此对所有情况都为True。
您可以使用列表推导来解决此问题:
if any([c in mystring for c in 'ab']):
...