猿问

如何将'if'条件合并到for循环语句中

data = [(1,'hi'),(2,'hello'),(3,'hi'),(4,'hi'),(5,'hello'),(6,'hello'), 

(7,'hi'),(8,'hello')]

new_data = []

for i in data:

    if i[1] == 'hi':

        new_data.append(i)

print(new_data)

输出:[(1, 'hi'), (3, 'hi'), (4, 'hi'), (7, 'hi')]


我是python的初学者。我想要相同的输出,但想要减少“For”循环中的代码量并提高效率。


胡说叔叔
浏览 320回答 2
2回答

慕哥6287543

虽然您的循环很好,但您可以使用列表理解:new_data = [i for i in data if i[1] == 'hi']

交互式爱情

您可以使用列表理解和过滤器在一行中写入。在这个问题上有一个关于过滤器的很好的解释。使用过滤器可以利用惰性求值,这有利于缩短执行时间。data = [(1,'hi'),(2,'hello'),(3,'hi'),(4,'hi'),(5,'hello'),(6,'hello'), (7,'hi'),(8,'hello')]new_data = list(filter(lambda i: i[1] == 'hi', data))输出[(1, 'hi'), (3, 'hi'), (4, 'hi'), (7, 'hi')]
随时随地看视频慕课网APP

相关分类

Python
我要回答