如何将“如果”条件合并到for循环语句中

时间:2018-09-04 08:58:35

标签: python python-3.6

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”循环中的代码量并提高效率。

2 个答案:

答案 0 :(得分:1)

虽然循环很好,但是您可以使用list comprehension

new_data = [i for i in data if i[1] == 'hi']

答案 1 :(得分:0)

您可以使用列表推导和过滤器将其写在一行上。 this question中提供了有关过滤器的很好的解释。使用过滤器,您可以使用lazy evaluation,从而缩短了执行时间。

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')]