Skip to main content
 首页 » 编程设计

python之Python FOR循环的疑问

2025年05月04日14mfryf

我对 Python FOR 循环有一些疑问:

这段代码效果很好:

a, b, c, d, e, f, g, h = range(8) 
 
_ = float('inf') 
 
   # a b c d e f g h 
W = [ 
    [0,2,1,3,9,4,_,_], # a 
    [_,0,4,_,3,_,_,_], # b 
    [_,_,0,8,_,_,_,_], # c 
    [_,_,_,0,7,_,_,_], # d 
    [_,_,_,_,0,5,_,_], # e 
    [_,_,2,_,_,0,2,2], # f 
    [_,_,_,_,_,1,0,6], # g 
    [_,_,_,_,_,9,8,0]] # h 
 
sum(1 for w in W[a] if w < _) - 1 # Degree 

我的问题是:

“FOR x IN y IF x < 10”仅适用于 SUM 内部?

我已经测试过了,但它不起作用:

a, b, c, d, e, f, g, h = range(8) 
 
_ = float('inf') 
 
   # a b c d e f g h 
W = [ 
    [0,2,1,3,9,4,_,_], # a 
    [_,0,4,_,3,_,_,_], # b 
    [_,_,0,8,_,_,_,_], # c 
    [_,_,_,0,7,_,_,_], # d 
    [_,_,_,_,0,5,_,_], # e 
    [_,_,2,_,_,0,2,2], # f 
    [_,_,_,_,_,1,0,6], # g 
    [_,_,_,_,_,9,8,0]] # h 
 
for w in W[a] if w < _: 
    print 1 

最好的问候,

请您参考如下方法:

尝试:

for k in [w for w in W[a] if w < _]: 
    print 1 

您需要在列表推导式中使用 if 子句(但如评论中所述,这不是执行此操作的最佳方式)。

编辑:如果您想学习 python 的一些“很棒”的特性,您也可以尝试使用 itertools:

for k in itertools.ifilter(lambda x: x < _ ,W[0]): 
    print 1 

还有许多其他解决方案,其中一些或多或少比其他解决方案优雅和高效。如果你想变得非常棒并且你基本上使用数组结构,请查看 numpy 以解锁优雅和速度的整个世界。