【发布时间】:2020-09-02 19:29:27
【问题描述】:
我有一个类似这样的列表 a = [[1,2,3],[4,5,6],[7,8,9],[1,3,2],[3,4,6],[7,8,1] ,[1,4,6]] 列表的大小是可变的。 现在我必须一次从列表中提取两个项目,例如([1,2,3],[4,5,6]) 并再次调用一个方法获取下两个元素并再次调用它,直到所有项目都结束。 最后一项的大小可以是 1。 像这样:
def abc(list_of_list_sliced):
do_something
a = [[1,2,3],[4,5,6],[7,8,9],[1,3,2],[3,4,6],[7,8,1],[1,4,6]]
abc([[1,2,3],[4,5,6]])
abc([7,8,9],[1,3,2])
abc([3,4,6],[7,8,1])
abc([[1,4,6]])
【问题讨论】:
-
只需循环使用
for i in range(0, len(a), 2): abc(a[i : i+2]) -
最后一个元素呢?
-
您可以通过
list(map(abc, more_itertools.sliced(a, 2)))迭代卡盘。通过pip install more_itertools安装。它将处理剩余物品。 -
@NishantRanjan 它仍然可以工作;如果您已经离开列表的末尾,切片将简单地包含比您要求的更少的元素(提取单个索引时不会出现这种情况,如果这样做会出现错误)。
-
知道了!谢谢@alani
标签: python python-3.x list