变量名作为函数参数?

时间:2016-12-20 02:06:45

标签: python variable-assignment args

我希望创建一个函数,其参数是列表L的名称及其参数。列表L中只包含数字,我想将它们全部舍入为1位小数(顺便说一下,列表L的元素应该被<舍入舍入为圆形数字,我不想要与他们一起的新名单M)。遗憾的是,列表名称在我计划的脚本中有所不同,这些列表的长度也是如此。这是我失败的尝试:

def rounding(name,*args):  
    M=[round(i,1) for i in args] #here is the list I want L to become
    name=M   #here I try to replace the previous list with the new one

morada=[1,2.2342,4.32423,6.1231]  #an easy example
rounding(morada,*morada)
print morada

输出:

[1, 2.2342, 4.32423, 6.1231]  #No changes

3 个答案:

答案 0 :(得分:3)

rounding函数return成为值。

def rounding(list_):
    return [round(i, 1) for i in list_]

然后你可以这样做:

>>> morada=[1,2.2342,4.32423,6.1231]  #an easy example
>>> morada = rounding(morada)
>>> morada
[1, 2.2, 4.3, 6.1]

或者,如果你真的希望它在功能中分配,你可以这样做:

def rounding(list_):
    list_[:] = [round(i,1) for i in args]

答案 1 :(得分:1)

关闭。列表是可变的,所以......

name[:] = M

答案 2 :(得分:0)

您可以使用eval()

例如,以下内容将以包含[1,2,3,4]的列表开头,并将第一个元素更改为5:

list_0 = [1, 2, 3, 4]

def modify_list(arg):
  list_1 = eval(arg)
  list_1[0] = 5

modify_list('list_0')
print list_0