@Parallel 其实这样挺好的,简洁,就是必须在[]里使用有些蛋疼。。比如下面的代码就会出错: {a for a in list: a} 就算这样也会报错: {a for a in list}
Parallel
2013-04-06 10:43:23 +08:00
@reusFork 你是说在[]里写成几行那样? @rephaslife 我觉得在里面写可读性不强,就比如《可爱的python》里那个计算闰年的程序result2 = [ p for p in range(2, N) if 0 not in [ p% d for d in range(2, int(sqrt(p))+1)] ]。
@archsocks port = 80 if settings.DISABLE_DEBUG else 8080
条件哪有正写反写之分。。
swulling
2013-04-06 12:37:45 +08:00
@Parallel 实际用起来超好用的,如果你非常讨厌这种写法,会变的有点丑。 result2 = [ p for p in range(2, N) if 0 not in [ p% d for d in range(2, int(sqrt(p))+1)] ]
--- result2 = [] for p in range(2,N): ____tmp = [] ____for d in range(2,int(sqrt(p))+1)): ________tmp.append(p%d) ____if 0 not in tmp: ________result2.append(p)
holsety
2013-04-06 12:46:44 +08:00
还有一种写法是:
port = settings.DEBUG and 8080 or 80
当然,8080不能为False,None等非True值,要不然上面这个不成立.
Parallel
2013-04-06 12:51:42 +08:00
@swulling 事实上只需要这样就可以了: result1 = [] for num in range(2, N): __for snu in range(2, int(sqrt(num))+1): ____if num % snu == 0: ______break __else: ____result1.append(num) 可能是我不大习惯那样子吧,也许以后习惯了就好。