【问题标题】:Searching for strings in list [duplicate]在列表中搜索字符串 [重复]
【发布时间】:2016-06-01 12:35:38
【问题描述】:

我必须创建一个将整数、字符串和布尔值列表作为输入的函数。然后将字符串作为一个句子打印出来。到目前为止,这是我的功能:

def sentenceGenerator(a):
    newList = []
    for string in a:
        if string == str
            newList.append(string)
    print(newList)  

这就是我使用它的方式:

sentenceGenerator(["Mulan", "and", 5, "Aladdin", "is", True, "Quality"])

我知道 if 语句不正确,但我不知道如何搜索。

【问题讨论】:

  • 只要使用is type(string) == str
  • 你认为这是做什么的:if string == str
  • 哈哈我不知道我是新人,不知道是什么。

标签: python string


【解决方案1】:

怎么样

source = ["Mulan", "and", 5, "Aladdin", "is", True, "Quality"]
[word for word in source if isinstance(word, str)]

甚至

' '.join([word for word in source if isinstance(word, str)])

得到一个句子?

【讨论】:

    【解决方案2】:

    在以下部分:

    string == str
    

    您正在比较具有str 类型的项目,并且由于== 操作将比较string 的值,因此前面的语句将是False

    如果要检查对象的类型,可以使用isinstance() 内置函数。

    作为一种更加 pyhtonic 的方式,您可以使用列表推导从列表中获取字符串,并将结果传递给带有适当分隔符的 str.join() 函数,以便加入单词:

    >>> ' '.join([item for item in l if isinstance(item, str)])
    'Mulan and Aladdin is Quality'
    

    【讨论】:

      【解决方案3】:

      您可以使用过滤器来查找字符串,然后使用连接来组合它们

      def sentenceGenerator(a):
          print ' '.join(filter((lambda x: type(x) is str), a)) 
      
      sentenceGenerator(["Mulan", "and", 5, "Aladdin", "is", True, "Quality"])
      
      Mulan and Aladdin is Quality
      

      【讨论】:

        【解决方案4】:

        如果你不熟悉 lambda,你可以使用内置的 map 函数:

        lst = ["Mulan", "and", 5, "Aladdin", "is", True, "Quality"]
        str = " ".join(map(str, lst))
        

        【讨论】:

          【解决方案5】:

          就这个-

          def sentenceGenerator(a):
              newList = []
              for string in a:
                  if isinstance(string, str) or isinstance(string, unicode):
                      newList.append(string)
              print(newList)
          

          【讨论】:

            猜你喜欢
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 2022-09-23
            • 2020-03-12
            • 1970-01-01
            • 2011-09-17
            • 2016-10-16
            相关资源
            最近更新 更多