Python ';在';运算符:包含单词的文本与单词列表
为什么下面的示例3使用Python ';在';运算符:包含单词的文本与单词列表,python,list,python-2.7,split,Python,List,Python 2.7,Split,为什么下面的示例3使用text.split(),生成正确的结果,而示例4不正确-即,它不生成结果,就像示例1一样 为什么示例2尽管没有使用text.split(),但仍然会产生一个结果(即使它不是期望的结果) 形容词之间不匹配的大小写:结果不符合预期 >>> adjectives = ['slow', 'crippled'] >>> firstAdjective = next((word for word in adjectives if word in te
text.split()
,生成正确的结果,而示例4不正确-即,它不生成结果,就像示例1一样
为什么示例2尽管没有使用text.split()
,但仍然会产生一个结果(即使它不是期望的结果)
>>> adjectives = ['slow', 'crippled']
>>> firstAdjective = next((word for word in adjectives if word in text), None)
>>> firstAdjective
>>>
>>> adjectives = ['slow', 'brown', 'quick', 'lazy']
>>> firstAdjective = next((word for word in adjectives if word in text), None)
>>> firstAdjective
'brown'
>>> firstAdjective = next((word for word in text.split() if word in adjectives), None)
>>> firstAdjective
'quick'
.split()
的情况。注意:这不起作用
>>> firstAdjective = next((word for word in text if word in adjectives), None)
>>> firstAdjective
>>>
文本
)的迭代将对其字符进行迭代,因此可以更明确地重写第四个循环:
firstAdjective = next((character for character in text if character in adjectives), None)
在字符串(text
)上迭代将在其字符上迭代,因此第四个循环可以更明确地重写:
firstAdjective = next((character for character in text if character in adjectives), None)
字符串是一个容器,因此中的
仍将对其起作用。但是,它不会自然地分解为单词,而是在字符上迭代。在示例4中,word
将连续获取每个字符的值。给它变量名word
并不能使它成为一个单词
在示例2中,您迭代的是列表形容词而不是字符串,因此您得到了word
获取单词值的“预期”行为。然后
中的操作符检查单词
是否是文本
的子字符串,而不必使用拆分
。请注意,文本
未拆分为单词<代码>文本中的“wn fo”将返回True
字符串是一个容器,因此中的仍将对其起作用。但是,它不会自然地分解为单词,而是在字符上迭代。在示例4中,word
将连续获取每个字符的值。给它变量名word
并不能使它成为一个单词
在示例2中,您迭代的是列表形容词而不是字符串,因此您得到了word
获取单词值的“预期”行为。然后
中的操作符检查单词
是否是文本
的子字符串,而不必使用拆分
。请注意,文本
未拆分为单词<代码>“wn fo”在文本中
将返回True
为什么示例4可以工作?形容词中没有一个字符串是单个字符长的,因此在
中不可能有单个字符。例2迭代形容词,例如,“hello world”中的“或”
,效果很好。@Jornsharpe我想他不知道迭代字符串会迭代字符,而不是单词。我建议你将其分解为更小的步骤,并对
循环使用传统的,这样您就可以打印
每一步,而不是在“黑盒子”中进行,并对最终结果感到惊讶。例如,我不清楚为什么你认为你会得到一个不同的结果,例如例2;您要求的是来自形容词的第一个匹配项,而不是来自形容词的任何内容在文本中的第一次出现。为什么示例4有效?形容词中没有一个字符串是单个字符长的,因此在
中不可能有单个字符。例2迭代形容词,例如,“hello world”中的“或”
,效果很好。@Jornsharpe我想他不知道迭代字符串会迭代字符,而不是单词。我建议你将其分解为更小的步骤,并对
循环使用传统的,这样您就可以打印
每一步,而不是在“黑盒子”中进行,并对最终结果感到惊讶。例如,我不清楚为什么你认为你会得到一个不同的结果,例如例2;您要求的是形容词的第一个匹配项,而不是文本中形容词的第一个匹配项。