Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/list/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python ';在';运算符:包含单词的文本与单词列表_Python_List_Python 2.7_Split - Fatal编程技术网

Python ';在';运算符:包含单词的文本与单词列表

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

为什么下面的示例3使用
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;您要求的是
    形容词的第一个匹配项,而不是
    文本中
    形容词的第一个匹配项。