如何在列表列表中一次应用一个函数?

时间:2017-08-26 09:27:59

标签: python list apply sublist

我有一个像这样的列表列表:

all_lists = [list0, list1, list2, list3, ....., listn]

这样的函数从这个all_lists中获取两个参数。

def function(list0, list1):
    do stuff

该函数将通过将索引移动1直到达到listn来继续从all_lists中获取参数。

有没有一种有效的方法呢? 谢谢!

2 个答案:

答案 0 :(得分:1)

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

答案 1 :(得分:1)

如果你想要所有可能的组合,你可以使用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