我通过此列表理解访问一个函数,并通过为
list_of_lists
的每个元素显式创建一个变量来使其工作。我想要一种更好的方法来访问列表理解中函数中的元素。示例:
list_of_lists = [[0, 1, 2, 3], [0, 1, 2, 3], ...]
[function(i, j, k, l) for i, j, k, l in list_of_lists]
这是一个非常烦人的语法,因为如果
(i, j, k, l) for i, j, k, l
子列表中的元素数量发生变化,我需要更新 list_of_lists
。
例如,更改为
[[0, 1, 2, 3, 4, 5, 6], ...]
需要语法为 (i, j, k, l, m, n) for i, j, k, l, m, n
并且我需要确保我没有数错。如果每个子列表的元素更多并且函数在编码过程中发生变化,情况会变得更糟。
有没有办法这样说:
[function(*) for * in list_of_lists]
所以我的烦恼有所改善?
我尝试搜索类似的内容,但很明显我不知道能够搜索此内容的正确词。
您正在寻找
*
来解压列表>>> def foo(a, b, c, d):
... return a + b + c + d
...
>>> lst = [1, 2, 3, 4]
>>> foo(*lst) # iterable unpack
10
>>> d = {'a':1, 'b':2, 'c':3, 'd':4}
>>> foo(**d) # dict unpack
10