Python 如何在列表中搜索字符串并输出包含该字符串的所有值?

Python 如何在列表中搜索字符串并输出包含该字符串的所有值?,python,Python,我希望能够查看列表中是否有字符串,然后打印列表中包含该字符串的所有项目 我发现[s代表y中的s(如果有的话)(xs代表topcolour中的xs)]可以使用,当我只在列表中查找数字时,但当我尝试查找颜色(蓝色、红色、黄色或绿色)时,这种方法非常有效它告诉我可以找到颜色,然后只打印出整个列表,而不是列表中的单个项目,就像打印数字一样。供参考,每张游戏的卡片、topnumber和TopColor都会发生变化 if any(topnumber in s for s in p1cards): m

我希望能够查看列表中是否有字符串,然后打印列表中包含该字符串的所有项目

我发现
[s代表y中的s(如果有的话)(xs代表topcolour中的xs)]
可以使用,当我只在列表中查找数字时,但当我尝试查找颜色(蓝色、红色、黄色或绿色)时,这种方法非常有效它告诉我可以找到颜色,然后只打印出整个列表,而不是列表中的单个项目,就像打印数字一样。供参考,每张游戏的卡片、topnumber和TopColor都会发生变化

if any(topnumber in s for s in p1cards):
    matching = [s for s in p1cards if any(xs in s for xs in topnumber)]
    print(matching) #this one works

elif any(topcolour  in s for s in p1cards):
    matching = [s for s in p1cards if any(xs in s for xs in topcolour)]
    print(matching) #this one doesn't work

如果可以找到,第一个代码块将输出列表中的确切项目。例如,如果topnumber是7,则第一个代码块将输出列表中的确切项目。但是,当我尝试按颜色搜索时,它将只输出整个列表。

如果没有明确的输入和输出示例,很难判断这是否正是您要执行的操作,但我认为这是基于你提供的

我个人觉得嵌套理解很难理解,你不需要它们。是检索满足特定条件的集合成员的好方法。这是不必要的——您可以只定义一行函数并将它们作为第一个参数传递——但这对于这样的非常简单的测试是很好的

p1cards = {'Pick colour', 'Red 1', 'Yellow 5', 'Red 9', 'Blue skip', 'Blue 6'}

topnumber = '9'

print(tuple(
    filter(
        lambda c: topnumber in c,
        p1cards,
    )
))

topcolour = 'Red'

print(tuple(
    filter(
        lambda c: topcolour in c,
        p1cards,
    )
))
输出:

('Red 9',)
('Red 1', 'Red 9')

注意:
tuple
调用仅用于显示。如果您在Python2.x中运行它,您不需要它们;在3.x中,如果没有它们,您将无法获得有用的输出。

您能举个例子吗?打印内容的例子吗?您的代码有一个
elif
。如果第一个匹配,第二个将不匹配。感谢您的回复,但我尝试将代码单独放在一个单独的程序中,没有任何If语句,它仍然不起作用。请向我们展示
topnumber
TopColor
p1cards
的示例内容。