根据值将列表拆分为子列表

在这里乞讨。我有以下列表(曲线和曲线长度):

crvs = [crv, crv, crv, crv, crv, crv, crv, crv, crv]
crvsLen = [18, 18, 18, 12, 12, 12, 12, 18, 12]

我需要创建子列表?还是2D数组?的 [crvs] 根据其长度如下(但实际的 [crvs] 不是它们的 [crvsLen]):

[[18, 18, 18, 18]
[12, 12, 12, 12, 12]]

我能够通过以下方式在列表中找到唯一值的计数及其索引:

listOfUniqueLenghts = list(dict.fromkeys(crvsLen))
listOfUniqueLenghts = [12, 18]
indices = [i for i, x in enumerate(crvsLen) if x == listOfUniqueLenghts[0]]

例如,它返回长度为 12 的 [crvs] 的以下索引:

indices = [3, 4, 5, 6, 8]

如何将 [crvs] 存储在 2d 数组或复杂列表中,并根据给定任意数量的唯一 crvsLen 及其数量的长度单独访问它们?我只能使用库存库。


哔哔one
浏览 133回答 2
2回答

FFIVE

制作按长度键控的字典可能是最简单的。一旦你拥有了它,你应该能够得到你需要的任何其他东西。crvs = ['a', 'b', 'c', 'd', 'e', 'f', 'g', 'h', 'i']crvsLen = [18, 18, 18, 12, 12, 12, 12, 18, 12]d = {}for length, value in zip(crvsLen, crvs):    d.setdefault(length, []).append(value)d# {18: ['a', 'b', 'c', 'h'], 12: ['d', 'e', 'f', 'g', 'i']}# all 18s:d[18]#['a', 'b', 'c', 'h']# list of lists:list(d.values())# [['a', 'b', 'c', 'h'], ['d', 'e', 'f', 'g', 'i']]

长风秋雁

实现所需内容的最佳方法是使用具有列表值的字典:d = collections.defaultdict(list)for crv in crvs:    d[len(crv)].append(crv)现在,您有一个字典,其中键是唯一长度,值是该长度的 crv 列表。
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Python