Python 如何在听写理解中添加else语句?

Python 如何在听写理解中添加else语句?,python,Python,我想在这个理解中添加一个else语句,但我不太可能将它放在下面代码的不同区域。我喜欢下面的格式,因为考虑到篇幅和活动,我觉得它相当可读 这不是重复:因为指南似乎不是此表单的解决方案 我从这条线索中得到了指导,但仍然没有发现它是有效的。请注意,我需要一个if和一个else,这意味着,在线程之后: ['b' if isinstance(el, str) else el for el in X] # When using 'if' and 'else', put 'for' in the end

我想在这个理解中添加一个else语句,但我不太可能将它放在下面代码的不同区域。我喜欢下面的格式,因为考虑到篇幅和活动,我觉得它相当可读

这不是重复:因为指南似乎不是此表单的解决方案

我从这条线索中得到了指导,但仍然没有发现它是有效的。请注意,我需要一个
if
和一个
else
,这意味着,在线程之后:

['b' if isinstance(el, str) else el for el in X]  # When using 'if' and 'else', put 'for' in the end
因此,我有一个
if
else
,它们按顺序排列,
for
在末尾

import torch
import numpy as np
class mlp1(torch.nn.Module):
    def __init__(self, num_features, num_hidden, num_classes):
        super(mlp1, self).__init__()
        self.num_classes = num_classes
        self.input_layer = torch.nn.Linear(num_features, num_hidden)
        self.out_layer = torch.nn.Linear(num_hidden, num_classes)
    def forward(self, x):
        x = self.input_layer(x)
        x = torch.sigmoid(x)
        logits = self.out_layer(x)
        probas = torch.softmax(logits, dim=1)
        return logits, probas

model = mlp1(num_features=28*28, num_hidden=100, num_classes=10)

freeze = ['input_layer']
# randomly select weights
locked_masks = {
                name: torch.tensor(np.random.choice([False, True],
                                              size=torch.numel(weight),
                                              # freeze 90% of the weights
                                              p=[0.0, 1.0]).reshape(weight.shape))

                if any(weight in name for weight in freeze)
                else
                name: torch.tensor(np.random.choice([False, True],
                                              size=torch.numel(weight),
                                              # freeze 90% of the weights
                                              p=[0.0, 1.0]).reshape(weight.shape))
                for name, weight in model.named_parameters()

                }

if-else不是字典理解的一部分,而是python中的三元运算符,如您链接的帖子中所述

您所做的是错误的,并且会生成一个
语法错误

这会让你知道该怎么做

keys = range(6)
values = range(6)

print({(k if k%2==0 else k**2) : (v if v%2==1 else v**2) for k, v in zip(keys, values)})
对于键,如果是偶数,则将数字平方;对于值,如果是奇数,则将数字平方。这将产生:

{0: 0, 1: 1, 2: 4, 9: 3, 4: 16, 25: 5}

if-else不是字典理解的一部分,而是python中的三元运算符,如您链接的帖子中所述

您所做的是错误的,并且会生成一个
语法错误

这会让你知道该怎么做

keys = range(6)
values = range(6)

print({(k if k%2==0 else k**2) : (v if v%2==1 else v**2) for k, v in zip(keys, values)})
对于键,如果是偶数,则将数字平方;对于值,如果是奇数,则将数字平方。这将产生:

{0: 0, 1: 1, 2: 4, 9: 3, 4: 16, 25: 5}

我是因为没喝咖啡而错过了什么,还是因为我也没喝咖啡而错过了什么?我有点困惑。我没有看到在
m1p1
类中定义的
命名的\u参数
方法。就列表理解而言,if/else在您的第一个块中看起来是正确的。您的第二个块应该会触发一个错误。@astrochun
命名的_参数
是从
nn.Module
类继承的。我是因为没有喝咖啡而错过了什么,还是因为表达式相同?我有点困惑。我没有看到在
m1p1
类中定义的
命名的\u参数
方法。就列表理解而言,if/else在您的第一个块中看起来是正确的。您的第二个块应该触发一个错误。@astrochun
命名的_参数
是从
nn.Module
类继承的。