【问题标题】:Creating list of list based on index and value [duplicate]基于索引和值创建列表列表[重复]
【发布时间】:2019-11-07 15:34:49
【问题描述】:

我得到了一个最大为 10^6 的正整数列表,并且给定列表中的项目总数最多为 10** 4。我想按如下所述的特定顺序存储这些值。

我想遍历列表,想把item的索引值放到该item对应的inner list中。

示例

给定列表:[3,0,1,1]

输出:[[1],[2,3],[],[0]]#预期输出

基本上输出列表应该包含索引对应于给定列表中的项目值的列表,该列表应该包含索引值

我想出了这个解决方案。

sequence = [[]] * 4
given = [3,0,1,1]
index = 0
for num in given:
    sequence[num].append(index)
    index+=1
print(sequence)

但我得到的输出是 [[0, 1, 2, 3], [0, 1, 2, 3], [0, 1, 2, 3], [0, 1, 2, 3]] 并且无法弄清楚原因。

【问题讨论】:

  • sequence = [[]] * 4 将创建 4 个相同的列表,因此更改一个将更改其他列表。尝试将其更改为sequence = [[] for _ in range(4)]
  • @ChrisDoyle 知道了,我尝试调试了好几个小时。
  • @LeoE 确实如此。谢谢

标签: python list multidimensional-array


【解决方案1】:

这样就可以了:

a = [3, 0, 1, 1]
[[j for j, k in enumerate(a) if k == i] for i, _ in enumerate(a)]
#[[1], [2, 3], [], [0]]

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2018-04-03
    • 1970-01-01
    • 2017-06-07
    • 1970-01-01
    • 1970-01-01
    • 2020-05-25
    • 1970-01-01
    相关资源
    最近更新 更多