【发布时间】:2018-07-23 13:32:17
【问题描述】:
>>> lst = [[-2, -1], [0, 1, 2]]
>>> lst
[[-2, -1], [0, 1, 2]]
>>> print (*lst)
[-2, -1] [0, 1, 2]
>>> print (type(lst))
<class 'list'>
所以lst 的类型在这里是list
在函数调用的上下文中 - 我不确定为什么它仍然不是列表。语句 print (type(lst)) prints: <class 'tuple'>. 在函数内,为什么 lst 不是 list?
def mymap(func, *lst):
res = []
print (func)
print (*lst)
print (type(lst))
print (list(zip(*lst)))
for args in list((zip(*lst))):
res.append(func(*args))
#return (res)
return (res)
ts = mymap(pow, [-2, -1], [0, 1, 2])
print (ts)
【问题讨论】:
-
您为什么希望
lst成为一个列表? -
*args语法将参数放在一个元组中。这些参数本身就是列表并不重要。 -
@hop - 我不希望
lst成为一个列表 - 但结果在从命令行打印*lst与*lst作为函数中的第二个参数之间不一致mymap。后一种情况似乎强制进行类型转换.... -
再说一次,为什么你的函数中的
lst应该包含除了一个元组之外的任何东西? -
它不不一致。您正在将列表解包到
print函数中。在您的函数定义中,您使用的是变量参数语法,它将始终使用元组来聚合参数。 在任何地方都没有进行类型转换。
标签: python-3.x list tuples iterable-unpacking