【发布时间】:2021-06-02 03:14:40
【问题描述】:
所以我有一个 2D 列表,其中一些元素的长度为零,而另一些则不是,我想通过创建长度大于 2 的元素对来创建一个 2D 列表,但保留长度为零的元素,这是一个示例以及我尝试过的:
mylist = [[], [3, 2, 4], [], [], [3, 2, 4], []] #2D list
newlist = [x[idx: idx+2] if len(x) >= 2 else [] for x in mylist for idx in range(0, len(x) - 1) ] #This tries to create the 3D list
print(newlist)
#newlist = [[3, 2], [2, 4], [3, 2], [2, 4]] #doesn't have the list with lenght zero
我想要的结果应该是这样的
newlist = [[], [3, 2], [2, 4], [], [], [3, 2], [2, 4], []]
我的初始列表可能不同,另一个有效的例子是:
mylist = [[1, 2], [3, 2, 4], [3, 4], [3, 2, 4], [1, 2, 3, 4]]
我已尝试更改 if else 条件,但似乎没有任何效果,因此将不胜感激,谢谢!
编辑:列表可能不同,它可能包含长度为零或不为零的元素,通过创建对我的意思是,如果我有类似的列表:
l1 = [2, 3, 4] it will create the pairs [[2,3], [3, 4]]
l2 = [2, 3, 4, 5] it will create the pairs [[2, 3], [3, 4], [4, 5]]
【问题讨论】:
-
for idx in range(0, len(x) - 1)将创建一个空的range每当len(x) <= 1所以x不会发生任何事情。 -
你想要的结果仍然有些模糊,我想如果你详细说明一下(列表总是大小为
0或3?创建对到底是什么意思? -
嗨,谢谢你的评论,我编辑了这个问题,也许它更清楚一点。
标签: python list list-comprehension