如果条件是m,最适合用python方法更新变量

2024-04-23 23:44:56 发布

您现在位置:Python中文网/ 问答频道 /正文

假设我有一组变量,所有这些变量都需要检查某个条件,如果所说的条件是真的,就进行更改。什么是最恶作剧的方式?下面的代码对于大量变量来说非常冗长。你知道吗

def addTen(var):
    if isinstance(var, int):
        var += 10
    return var

var1 = 1
var2 = "2"
var3 = 3

var1 = addTen(var1)
var2 = addTen(var2)
var3 = addTen(var3)

print(var1) #prints 11
print(var2) #prints 2
print(var3) #prints 13

Tags: 代码ifvardef方式条件printsisinstance
3条回答

使用姓名列表:

def addTen(var):
    if isinstance(var, int):
        var += 10
    return var

var1 = 1
var2 = "2"
var3 = 3

for var in [var1, var2, var3]:
    print addten(var)

那你以后还有名字。你知道吗

一般来说,你会把它们装进某种容器里(也许是一张单子?)。。。你知道吗

var = [1, "2", 3]

for i, v in enumerate(var):
    var[i] = addTen(v)

当然,对于列表理解,这种情况更容易/更清晰,因为函数非常简单,可以将其编写为条件表达式:

var = [1, "2", 3]
var = [v + 10 if isinstance(v, int) else v for v in var]

甚至:

var = [addTen(v) for v in var]  # map(addTen, var) works in python2.x, but in python3.x you get an iterator instead of a sequence.

首先,我假设addTen定义如下:

def addTen(var):
    if isinstance(var, int):
        var += 10
    return var

更新变量组

有多个选项,都假设,你得到了相关变量的某种容器。你知道吗

使用列表

varlst = [1, 2, 3]

if True:
    varlst = map(addTen, varlst)
print varlst

或者

if True:
    varlst = [addTen(itm) for itm in varlst]
print varlst

使用字典

vardict = {"var1": 1, "var2": 2, "var3": 3}

if True:
    vardict = {key: addTen(val) for key, val in vardict.items()}

print vardict

或者

if True:
    for key in vardict:
        vardict[key] = addTen(vardict[key])

print vardict

使用类

class Container(object):
    def __init__(self, var1, var2, var3):
        self.var1 = var1
        self.var2 = var2
        self.var3 = var3

    def addTen(self)
        self.var1 += 10
        self.var2 += 10
        self.var3 += 10

    def __repr__(self):
        templ = "<Container: {self.var1}, {self.var2}, {self.var3}>"
        return templ.format(self=self)

container = Container(1, 2, 3)
container.addTen()
print container

相关问题 更多 >