Python 如何缩短二维列表?

Python 如何缩短二维列表?,python,list,Python,List,我有两个列表l1和l2L2包含更多的值​​而不是l1。我想调整它,使l1和l2具有相同数量的值。例如,l1在第一个元素中有3个条目l2有8个条目。我想把l2的长度改为l1 我如何才能比我的解决方案做得更好 下面的例子更好地解释了这一点 l1 = [[285, 2286, 260], [285, 3614], [671, 3883, 285,85]] l2 = [[1,2,3,4,5,6,7,8],[1,2,3,4,5,6,7,8], [1,2,3,4,5,6,7,8]] l3 = [[1,2,

我有两个列表
l1
l2
<代码>L2包含更多的值​​而不是
l1
。我想调整它,使
l1
l2
具有相同数量的值。例如,
l1
在第一个元素中有3个条目<代码>l2有8个条目。我想把
l2
的长度改为
l1

我如何才能比我的解决方案做得更好

下面的例子更好地解释了这一点

l1 = [[285, 2286, 260], [285, 3614], [671, 3883, 285,85]]
l2 = [[1,2,3,4,5,6,7,8],[1,2,3,4,5,6,7,8], [1,2,3,4,5,6,7,8]]

l3 = [[1,2,3],[1,2], [1,2,3,4]] # What I want

# My try, 
l2_2 = []
for value1, value2 in zip(l1,l2):
length = len(value1)
value2 = value2[:length]
print(value2)
l2_2.append(value2)
  
l2 = l2_2
print(l2)

>>> [1, 2, 3]
>>> [1, 2]
>>> [1, 2, 3, 4]
>>> [[1, 2, 3], [1, 2], [1, 2, 3, 4]]

1,2,3
列表与另一个列表的长度切分

l1 = [
    [285, 2286, 260],
    [285, 3614],
    [671, 3883, 285, 85],
]
l2 = [
    [1, 2, 3, 4, 5, 6, 7, 8],
    [1, 2, 3, 4, 5, 6, 7, 8],
    [1, 2, 3, 4, 5, 6, 7, 8],
]
l3 = [k2[: len(k1)] for k1, k2 in zip(l1, l2)]
l3

[[1, 2, 3], [1, 2], [1, 2, 3, 4]]
[[1, 2, 3], [1, 2], [1, 2, 3, 4]]

正如所料。

1、2、3
列表与另一个列表的长度切分

l1 = [
    [285, 2286, 260],
    [285, 3614],
    [671, 3883, 285, 85],
]
l2 = [
    [1, 2, 3, 4, 5, 6, 7, 8],
    [1, 2, 3, 4, 5, 6, 7, 8],
    [1, 2, 3, 4, 5, 6, 7, 8],
]
l3 = [k2[: len(k1)] for k1, k2 in zip(l1, l2)]
l3

[[1, 2, 3], [1, 2], [1, 2, 3, 4]]
[[1, 2, 3], [1, 2], [1, 2, 3, 4]]

正如所料。

您不需要对列表进行压缩,简单的列表理解就是

l3 = [l2[i][:len(l)] for i, l in enumerate(l1)]
输出


你不需要
zip
列表,简单的列表理解就是

l3 = [l2[i][:len(l)] for i, l in enumerate(l1)]
输出