有没有更短的方法来初始化此循环?

时间:2019-05-25 13:35:26

标签: python

是否有较短的方法来初始化此循环? 感觉像对于这样一个简单的语句四次键入“ val”可能不是最快的方法。

(该示例是用于解释我观点的随机代码,实际的循环内容会复杂得多。)

values=[4,8,0,1,5,8,3]
for val in [val for val in values if val!=1]:
    print(val)

1 个答案:

答案 0 :(得分:0)

生成器表达式(无需创建另一个列表来进行迭代)和the filter() function(创建迭代器)就可以想到:

values = [4,8,0,1,5,8,3]

# generator expression instead of list expressen - is more efficient
for val in (val for val in values if val != 1):
    print(val)

# filter the list  - creates an iterator
for val in filter(lambda x:x != 1, values):
    print (val)

输出:

4
8
0
5
8
3