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