我正在尝试存储word的值,有没有办法做到这一点?
if any(word in currentFile for word in otherFile):
答案 0 :(得分:2)
如果您想要自己的话,请不要使用any
:
words = [word for word in otherFile if word in currentFile]
然后你可以直接进行真值测试(因为空列表是假的):
if words:
# do stuff
还可以访问匹配的单词:
print words
编辑:如果您只想要第一个匹配字,您也可以这样做:
word = next((word for word in otherFile if word in currentFile), None)
if word:
# do stuff with word
答案 1 :(得分:1)
稍作跟进:
你应该在这里考虑any()
函数的输入是什么。输入是一个发电机。所以让我们分解一下:
word in currentFile
是布尔表达式 - 输出值为True或False for word in otherFile
对otherFile
因此any()
参数的输出实际上是布尔值的生成器。您只需执行[word in currentFile for word in otherFile]
即可查看。请注意,括号表示将创建一个列表,同时计算所有值。生成器在功能上的工作方式相同(如果你所做的是对所有值的单个循环),但在内存方面更好。关键是 - 您向any()
提供的内容是布尔值列表。它不了解实际的单词 - 因此它不可能输出一个单词。
没有。你必须编写显式循环:
def find_first(currentFile, otherFile)
for word in currentFile:
if word in otherFile:
return word
如果未找到匹配项,则函数将隐式返回None
,这可能由find_first()
函数之外的调用者处理。
答案 2 :(得分:0)
您无法直接从any
存储此值。我推荐一个for-loop
for word in otherFile:
if word in currentFile:
break
else:
word = None
if word is not None:
print word, "was found in the current file"
请注意,这只会存储word
的第一个相关值。如果您想要word
的所有相关值,那么应该这样做:
words = [word for word in otherFile if word in currentFile]
for word in words:
print word, "was found in the current file"
答案 3 :(得分:0)
您可以从currentFile
otherFile
获取第一个字段currentFile
from itertools import dropwhile
word = next(dropwhile(lambda word: word not in currentFile, otherfile))
来自StopIteration
的所有字词不在otherFile
中然后取dropping一个:
currentFile
如果没有这样的词,则会引发words = [word for word in otherFile if word in currentFile]
。
您可以使用next <{1}}获取words = list(set(otherFile) & set(currentFile))
中的{em>所有字词:
words = filter(lambda word: word in currentFile, otherFile)
或者使用list comprehension:
{{1}}
或者使用set intersection:
{{1}}