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

2024-04-25 07:47:16 发布

您现在位置:Python中文网/ 问答频道 /正文

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,'高'),(3,'高'),(4,'高'),(7,'高')]

我是python的初学者。 我想要相同的输出,但希望减少For循环中的代码量,提高效率。你知道吗


Tags: 代码inhellonewfordataifhi
2条回答

您可以使用列表理解和筛选器在一行中写入。在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')]

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

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

相关问题 更多 >