Python 解包一个列表,这样第一个元素就被分配了对以下元素进行操作的函数的结果
我有一个列表,我想在其中提取它的元素,这样提取的第一个元素就被分配给对以下元素进行操作的函数的结果。Python 解包一个列表,这样第一个元素就被分配了对以下元素进行操作的函数的结果,python,list,python-3.x,Python,List,Python 3.x,我有一个列表,我想在其中提取它的元素,这样提取的第一个元素就被分配给对以下元素进行操作的函数的结果。 也就是说,给定列表[“user\u arr”,100,True]我希望最终结果是:user\u arr=prev\u def\u func(100,True) 提前谢谢 p.S.我已经得到了答案,这不是一个可行的设计,但是,因为有人问我,为了让别人知道这不是一个好的设计,这个问题的原因是我有一个函数需要重复调用多次,每次都有另一组参数: user_in1 = prev_func(val1, fl
也就是说,给定列表
[“user\u arr”,100,True]
我希望最终结果是:user\u arr=prev\u def\u func(100,True)
提前谢谢
p.S.我已经得到了答案,这不是一个可行的设计,但是,因为有人问我,为了让别人知道这不是一个好的设计,这个问题的原因是我有一个函数需要重复调用多次,每次都有另一组参数:
user_in1 = prev_func(val1, flag1)
user_in2 = prev_func(val2, flag2)
and so on...
我想我应该将所有参数(例如user_inX、valX、flagX)压缩成一个列表列表,然后在嵌套列表上迭代,以上面列出的方式调用每个子列表的元素。嗯,从字符串创建变量名可能不是个好主意,但这绝对是可能的
i = ["user_arr", 100, True]
locals()[i[0]] = prev_def_func(*i[1:])
print(user_arr)
然而,使用dict感觉更干净、更地道
i = ["user_arr", 100, True]
o = {i[0]: prev_def_func(*i[1:])}
print(o["user_arr"])
看到您后更新PS
你绝对应该使用口述
arg_list = [(user_in1, val1, flag1), ...]
result = {user_in: prev_def_func(val, flag) for user_in, val, flag in arg_list}
请注意,这是一个非常好的设计,仅适用于模块的globals变量:
very_strange_list = [
["user_arr", 100, True],
["user_arr2", 500, False],
]
def my_func(val1, val2):
return '%d %s' % (val1, val2)
for data in very_strange_list:
globals()[data[0]] = my_func(*data[1:])
数据[1:]将创建一个新列表,列表末尾包含元素1。
一元*将从列表中提取每个字段,并将其分配给函数参数
globals(),同时返回当前模块的全局符号表的字典。(如果在函数或方法中,定义函数的位置,而不是使用函数的位置)
使用locals()的解决方案不起作用,文档明确指出不要修改字典:
注:本词典内容不得修改;更改可能不会影响解释器使用的本地变量和自由变量的值
l[0]=prev_def_func(*l[1:])
?但不清楚你为什么想要这个或者你想要实现什么;你能给我一个答案吗?如果你需要通过一个字符串中存储的名字来访问一个变量,你可能应该重新设计。哦,我想我明白了,我以为你想要列表中的结果。如果你认为你想用字符串作为名字,再想想。那么,不是最好的设计吗?很公平。谢谢你的回答。它不应该是o={i[0]:prev_def_func(*i[1:])}
,也就是说切片是从元素索引1开始的吗?试过这样的切片,效果很好。谢谢谢谢你的回答。以前甚至不知道locals()
和globals()
。将我的设计改为使用字典。