python中的列表到元组返回

python中的列表到元组返回,python,list,tuples,Python,List,Tuples,我是python新手。我试图创建一个函数,该函数将字符串和列表作为参数,并为字符串中找到的每个列表元素返回一个布尔值(该值应作为元组返回)。我尝试了以下代码 def my_check(str1, list1): words = str1.split() x = 1 for l in range(len(list1)): for i in range(len(words)): if list1[l] == words[i]:

我是python新手。我试图创建一个函数,该函数将字符串和列表作为参数,并为字符串中找到的每个列表元素返回一个布尔值(该值应作为元组返回)。我尝试了以下代码

def my_check(str1, list1):
    words = str1.split()
    x = 1
    for l in range(len(list1)):
        for i in range(len(words)):
            if list1[l] == words[i]:
                x = x+1
        if (x > 1):
            print(True)
            x = 1
        else:
            print(False)

output = my_check('my name is ide3',  ['is',  'my', 'no'])
print(output)
此代码输出

True
True
False
如何将此值作为具有

>>> output
(True,  True,  False)
欢迎任何想法。

救援发电机(编辑:第一次倒过来)


如果要修改将内容打印到返回内容的代码中的任何代码,必须:

  • 在顶部创建一个空集合
  • 将每个
    print
    调用替换为向集合添加值的调用
  • 归还收藏
  • 因此:


    这对于元组来说有点笨拙,但它可以工作。您可能需要考虑使用一个列表,因为这并不那么尴尬(并且,如果您真的需要转换它,您可以总是在代码>返回元组(结果)< /代码>)。考虑到效率,也许我们应该首先从STR1.SPLITE()构建一个集合,因为集合中的查询项比列表中的查询速度要快得多,例如:

    def my_check(str1, list1):
        #build a set from the list str1.split() first
        wordsSet=set(str1.split())
        #build a tuple from the boolean generator
        return tuple((word in wordsSet) for word in list1)
    

    您可以直接在字符串中检查字符串,因此不需要split()。所以这也是可行的:

    def my_check(str1, list1):
        return tuple(w in mystr for w in mylist)
        # return [w in mystr for w in mylist] # Much faster than creating tuples
    
    然而,由于通常不需要返回一个元组而不是一个新列表,因此您应该能够使用上面的直接列表理解(如果必须的话,您可以始终将列表转换为代码下游的元组)

    python结果:

    In [117]: %timeit my_check_wtuple('my name is ide3',  ['is',  'my', 'no'])  
    100000 loops, best of 3: 2.31 µs per loop
    
    In [119]: %timeit my_check_wlist('my name is ide3',  ['is',  'my', 'no'])  
    1000000 loops, best of 3: 614 ns per loop
    
    def my_check(str1, list1):
        return tuple(w in mystr for w in mylist)
        # return [w in mystr for w in mylist] # Much faster than creating tuples
    
    In [117]: %timeit my_check_wtuple('my name is ide3',  ['is',  'my', 'no'])  
    100000 loops, best of 3: 2.31 µs per loop
    
    In [119]: %timeit my_check_wlist('my name is ide3',  ['is',  'my', 'no'])  
    1000000 loops, best of 3: 614 ns per loop