我想看看是否有一个Python等同于“for all”(cf https://en.wikipedia.org/wiki/List_of_mathematical_symbols)的数学概念,例如检查所有被评估实例的某些条件是否为True。
例如
假设:
word1 = 'pizza'
word2 = 'piza'
我想检查'piza'中的每个字母是否都在'pizza'中,相反,如果'pizza'中的每个字母都在'piza'中。
有没有办法通过诸如for loop
?
e.g。 for letter in word1:
答案 0 :(得分:1)
在您提供的示例问题中,我只是使用set
来检查字符串是否包含来自另一个字符串的每个字母:
print set('pizza') == set('piza') # True, both strings have same set of letters
print set('pia') <= set('pizza') # True, 'pizza' contains all letters found in 'pia'
print set('pizza') <= set('pia') # False, 'pia' doesn't contain all letters found in 'pizza'
在一般情况下,我会像其他人建议的那样使用all
。
答案 1 :(得分:0)
使用生成器
我们可以使用与Python all
结合的生成器来轻松实现这一目标。
word1 = 'piza'
word2 = 'pizza'
print(all(letter in word1 for letter in word2))
print(all(letter in word2 for letter in word1))
或扩展
扩展单行使得更容易看到发生了什么。该功能一直持续到word1
中的所有字母为止,并检查它们是否在word2
中。如果函数完成for loop
,则表示word1
中的所有字母都在word2
中,因此它返回True
。如果word1
中有一封word2
字母不在False
,则会返回word1 = 'pizza'
word2 = 'piza'
def if_letters_in(word1, word2):
for letter in word1:
if letter not in word2:
return False
return True
print(if_letters_in(word1, word2))
print(if_letters_in(word2, word1))
。
True
True
<强>输出强>
videoView.setVideoPath(
"http://trackfield.webcam.oregonstate.edu/axis-cgi/mjpg/video.cgi");
videoView.start();
答案 2 :(得分:-1)
非匹配元素将添加到生成器中,使其非空,因此条件失败
nodeInterface