2024-04-26 07:34:59 发布
网友
我有一个列表,每个维度都有不同的长度,如下所示:
list1=[[2,3,4],[1],[77,8,27,12],[25,15]]
我还有另一个元素数量相同的列表,比如:
我想把我的list2重塑为list1,并在for循环中一起处理两个列表。在
这是一种可爱的方式。在
list1 = [[2,3,4],[1],[77,8,27,12],[25,15]] list2 = list("abcdefghij") list2_iterator = iter(list2) list2_reshaped = [[next(list2_iterator) for _ in sublist] for sublist in list1] print(list2_reshaped) Out: [['a', 'b', 'c'], ['d'], ['e', 'f', 'g', 'h'], ['i', 'j']]
我不知道单纯的理解是否可能。在
如果要在循环中处理它们,只需执行以下操作:
list1=[[2,3,4],[1],[77,8,27,12],[25,15]] list2=["a", "b", "c", "d", "e", "f", "g", "h", "i", "j"] last = 0 for ele in list1: print(ele, list2[last : last + len(ele)]) last += len(ele)
结果:
将list1展平以匹配list2很容易,要么使用itertools.chain.from_iterable(list)),要么使用flat1 = [elem for sublist in list1 for elem in sublist],或者其他各种选项in this question。在
itertools.chain.from_iterable(list))
flat1 = [elem for sublist in list1 for elem in sublist]
走另一条路要复杂一些。但是,与其寻找一行代码,不如显式地执行:在list2上创建一个迭代器,并根据需要从中提取元素:
list2
def zipstructured(list1, list2): iter2 = iter(list2) for sublist1 in list1: sublist2 = list(itertools.islice(iter2, len(sublist1))) yield sublist1, sublist2
现在您可以这样做:
这是一种可爱的方式。在
我不知道单纯的理解是否可能。在
如果要在循环中处理它们,只需执行以下操作:
结果:
^{pr2}$将list1展平以匹配list2很容易,要么使用
itertools.chain.from_iterable(list))
,要么使用flat1 = [elem for sublist in list1 for elem in sublist]
,或者其他各种选项in this question。在走另一条路要复杂一些。但是,与其寻找一行代码,不如显式地执行:在
list2
上创建一个迭代器,并根据需要从中提取元素:现在您可以这样做:
^{pr2}$相关问题 更多 >
编程相关推荐