对于以下示例:
def fuctionName(int, bool):
    if int in range(...):
        if bool == True:
            return False
        else:
            return True
Run Code Online (Sandbox Code Playgroud)
有没有办法跳过第二个if语句?只是告诉计算机返回布尔值的反面bool?
我有两个清单:
x = ['1', '2', '3']
y = ['a', 'b', 'c']
Run Code Online (Sandbox Code Playgroud)
我需要从这些列表中创建一个元组列表,如下所示:
z = [('1','a'), ('2','b'), ('3','c')]
Run Code Online (Sandbox Code Playgroud)
我尝试这样做:
z = [ (a,b) for a in x for b in y ]
Run Code Online (Sandbox Code Playgroud)
但结果是:
[('1', '1'), ('1', '2'), ('1', '3'), ('2', '1'), ('2', '2'), ('2', '3'), ('3', '1'), ('3', '2'), ('3', '3')]
Run Code Online (Sandbox Code Playgroud)
即x中每个元素的元组列表,y中的每个元素......做我想做的事情的正确方法是什么?谢谢...
编辑:在编辑之前提到的另外两个重复是我的错误,错误地将它缩进到另一个for循环中...
什么是更好用:
if var in X:
    #do_whatever
elif (var in Y):
    #do_whatever2
Run Code Online (Sandbox Code Playgroud)
要么:
if var in X:
    #do_whatever
if var in Y:
    #do_whatever2
Run Code Online (Sandbox Code Playgroud)
假设var不能同时在X和Y中......是否有任何规则或常规做法?我应该使用elif吗?还是一个新的if?或者没关系?
编辑:很好的答案..但我可以说,如果第一个声明(#do_whatever)以一个返回或休息结束; 在最后,其他条件将不会被测试,从而浪费系统资源或造成麻烦,可以做任何事情......我猜......
我有一个调用可执行文件的python脚本.可执行文件的输出被重定向到日志文件以及有关其被调用时间的一些信息.例如,使用python -V可执行文件来说明:
import time, subprocess
with open('./LOGFILE.txt', 'a') as F:
    F.write('******\n')
    F.write('Events on %s :\n'%time.strftime("%Y-%m-%d %H:%M:%S", time.localtime()))
    EXE_output = subprocess.call(['python', '-V'], stdout=F, stderr=F)
Run Code Online (Sandbox Code Playgroud)
该文件的输出LOGFILE.txt是:
Python 2.7.3
******
Events on 2013-04-10 19:27:25 :
Run Code Online (Sandbox Code Playgroud)
我期待的地方如下:
******
Events on 2013-04-10 19:27:25 :
Python 2.7.3
Run Code Online (Sandbox Code Playgroud)
******在运行子进程并将其输出和错误重定向到文件之前,我在打开的日志文件中编写了时间信息.为什么这样订购?我该如何重新排序?
我有一些小的软件,计算出每个三角形数因子的数量,看看有什么是他们的第一个比的因素X号(是的,这是一个欧拉计划的问题,更多数量的12 ,,虽然我没解决这个问题还)......因为我试图拍X一些随机值,看看代码的功能和多少时间,我发现了一些奇怪的(至少对我来说):直到X = 47明显正常的方式执行时间增加,但是当X = 48时它比正常情况增加更多,并且函数调用远大于速率,它(爆炸),如果我会这样说..为什么它会这样做?
代码:
def fac(n):
    c=0
    for i in range (1,n+1):
        if n%i==0:
            c=c+1
    return c
n=1
while True:
    summ=0
    for i in range (1,n+1):
        summ=summ+i
    if fac(summ)>X:
        break
    n=n+1
print summ
Run Code Online (Sandbox Code Playgroud)
并在分析时:
when X=45 :  314 function calls in 0.027 CPU seconds
when X=46 :  314 function calls in 0.026 CPU seconds
when X=47 :  314 function calls in 0.026 CPU seconds
when X=48 :  674 function calls in 0.233 CPU seconds
when X=49 …Run Code Online (Sandbox Code Playgroud) python ×5
boolean ×1
if-statement ×1
list ×1
loops ×1
redirect ×1
subprocess ×1
time ×1
tuples ×1