假设我有一张单子
list1 = ['Dog', 'Cat', 'Monkey', 'Parakeet', 'Zebra']
还有一个
^{pr2}$(可以想象第二个列表是用itertools.groupby动物成为家庭宠物。)
现在假设我要给第一个列表提供与第二个相同的子列表结构。在
list3 = [['Dog', 'Cat'], ['Monkey'], ['Parakeet'], ['Zebra']]
我可以这样做:
list3 = []
lengths = [len(x) for x in list2]
count = 0
for leng in lengths:
templist = []
for i in range(leng):
templist.append(list1[count])
count += 1
list3.append(templist)
我还没有完全调试过,但我觉得应该行得通。我的问题是,有没有一种更像Python或更简单的方法来做到这一点?这看起来有点复杂,我不得不想象有一种更优雅的方式来实现它(也许在itertools中,它永远不会停止给我留下深刻的印象)。在
将}作为每个列表2的必要N个元素,例如:
list1
的iter
和{您只需将
next
用于无导入解决方案:输出:
^{pr2}$但是,对于深度输入
n
级别,可以使用递归:输出:
如果您可以修改原始列表(如果不介意,您可以先复制),您可以在列表理解中使用
pop()
:相关问题 更多 >
编程相关推荐