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
提交
取消