如何一次在两个列表列表上应用一个函数?
How to apply a function on a list of lists two at a time?
我有一个这样的列表列表:
all_lists = [list0, list1, list2, list3, ....., listn]
还有一个像这样的函数,它接受来自这个 all_lists 的两个参数。
def function(list0, list1):
do stuff
该函数将通过将索引移动 1 直到到达 listn 来继续从 all_lists 获取参数。
有什么有效的方法吗?
谢谢!
zip
列表本身并在循环中传递参数。
for l1, l2 in zip(all_lists[:-1], all_lists[1:]): # or zip(all_lists, all_lists[1:])
function(l1, l2)
MVCE:
lst = [1, 2, 3, 4]
for i, j in zip(lst, lst[1:]):
print(i, j)
1 2
2 3
3 4
如果你想要所有可能的组合,你可以使用itertools combination方法
>>> import itertools
>>> a = [[1,2],[2,3],[3,4]]
>>>
>>> for _lst in itertools.combinations(a, 2):
... print _lst
...
([1, 2], [2, 3])
([1, 2], [3, 4])
([2, 3], [3, 4])
您的代码:
all_lists = [list0, list1, list2, list3, ....., listn]
for l1,l2 in itertools.combinations(all_list , 2):
print l1,l2
# do stuff
我有一个这样的列表列表:
all_lists = [list0, list1, list2, list3, ....., listn]
还有一个像这样的函数,它接受来自这个 all_lists 的两个参数。
def function(list0, list1):
do stuff
该函数将通过将索引移动 1 直到到达 listn 来继续从 all_lists 获取参数。
有什么有效的方法吗? 谢谢!
zip
列表本身并在循环中传递参数。
for l1, l2 in zip(all_lists[:-1], all_lists[1:]): # or zip(all_lists, all_lists[1:])
function(l1, l2)
MVCE:
lst = [1, 2, 3, 4]
for i, j in zip(lst, lst[1:]):
print(i, j)
1 2
2 3
3 4
如果你想要所有可能的组合,你可以使用itertools combination方法
>>> import itertools
>>> a = [[1,2],[2,3],[3,4]]
>>>
>>> for _lst in itertools.combinations(a, 2):
... print _lst
...
([1, 2], [2, 3])
([1, 2], [3, 4])
([2, 3], [3, 4])
您的代码:
all_lists = [list0, list1, list2, list3, ....., listn]
for l1,l2 in itertools.combinations(all_list , 2):
print l1,l2
# do stuff