如何更改列表列表中的索引

2024-04-26 04:18:51 发布

您现在位置:Python中文网/ 问答频道 /正文

我想改变列表的索引方式。你知道吗

假设我的初始列表是一个列表的两个列表和三个元素的两个列表。例如:

L = [[[1, 2, 3]], [[4, 5, 6], [7, 8, 9]]]

那就说我想把“4”放进L,我必须这么做

L[1][0][0].

现在我想创建一个新的列表,使最后一个索引成为第一个索引

Lnew = [[[1], [4, 7]], [[2], [5, 8]], [[3], [6, 9]]]

然后我要做的是:

Lnew[0][1][0]

在更一般的情况下,我想创建列表Lnew,定义如下:

Lnew[i][k][l] = L[k][l][i]

有没有一种方法可以在不执行以下循环的情况下对索引进行这种排列:

Lnew = []
for i in range(len(Payment_dates)):
    L1 = []
    for k in range(N+1):
        L2 = []
        for l in range(k+1):
            L2.append(L[k][l][i])
        L1.append(L2)
    Lnew.append(L1)

就复杂性而言,这不是很理想。你知道吗

谢谢


Tags: 方法in元素l1列表forlen定义
1条回答
网友
1楼 · 发布于 2024-04-26 04:18:51

您想要实现的是,假设所有子列表都具有相同的长度。你知道吗

如果它们的长度不同,您可能希望将零附加到所有子列表,直到它们具有最长子列表的长度,或者(更容易)直到无穷大。你知道吗

通过使用函数访问列表中的元素,可以实现相同的行为。每次需要列表元素时,都可以在运行时调用此函数:

def getElement(myList, i, k, l):
    if k < myList.length and l < myList[k].length and i < myList[k][l].length:
        return myList[k][l][i]
    else: 
        return None # or zero, or whatever you prefer

根据您的代码结构,您可能不需要将其作为函数,只需将条件放在代码中即可。你知道吗

您还可以嵌套if条件,并根据元素不存在的级别抛出不同的错误或返回不同的值。你知道吗

如果我们忽略了输出多维列表元素的时间复杂性,这种方法应该会将时间复杂性从O(n^3)降低到O(1)。你知道吗

相关问题 更多 >