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 回答

交互式爱情
TA贡献1712条经验 获得超3个赞
您可以使用列表理解和过滤器在一行中写入。在这个问题上有一个关于过滤器的很好的解释。使用过滤器可以利用惰性求值,这有利于缩短执行时间。
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')]
添加回答
举报
0/150
提交
取消