我想知道为什么逗号符号","返回true:
mutant = toolbox.clone(ind1)
ind2, = tools.mutGaussian(mutant, mu=0.0, sigma=0.2, indpb=0.2)
print (ind2 is mutant)
>>>True
但是当我删除逗号符号时:
ind2 = tools.mutGaussian(mutant, mu=0.0, sigma=0.2, indpb=0.2)
print (ind2 is mutant)
>>>False
它返回false。 如果有人能够解释这背后的机制,那将是非常感激的。
答案 0 :(得分:3)
您正在呼叫的Assignment statements reference documenation会返回包含单个值的元组:
返回:一个人的元组。
当您不使用逗号时,您将结果元组分配给单个变量。
使用逗号,您要求Python将右侧的iterable解包为左侧的一系列名称;因为左手侧和右手侧只有一个元素,这项工作。您将返回的元组中的值解压缩为单个变量。
请参阅http://www.codigo-postal.pt/?cp4=4710&cp3=:
赋值语句计算表达式列表(请记住,这可以是单个表达式或以逗号分隔的列表,后者产生元组)并将单个结果对象从左到右分配给每个目标列表。
如果您想在不使用可迭代赋值的情况下测试该单个值,则必须手动从元组中获取该值:
ind2 = tools.mutGaussian(mutant, mu=0.0, sigma=0.2, indpb=0.2)
print(ind2[0] is mutant)
请注意[0]
索引。
答案 1 :(得分:-1)
当您使用逗号声明或指定变量时,您正在创建tuple。