【问题标题】:Need take indices from list in specific order需要按特定顺序从列表中获取索引
【发布时间】:2021-10-21 05:21:38
【问题描述】:

我有一些列表 A = ['a', 'b', 'c', 'd', 'e', 'f'] 我需要按此顺序获取元素的索引 0 1 1 2 2 3 3 4 4 5

但是我的代码做了这个命令 0 1 2 3 4 5

A = ['a', 'b', 'c', 'd', 'e', 'f']
for i in A:
    print(A.index(i), end=' ')

【问题讨论】:

  • 整数列表不是索引吗?您的意思是要根据索引列表提取列表的值吗?
  • 索引是否遵循模式?像每个索引中的两个?
  • @Matiiss 我认为这只是第 0 个索引存在一次的情况。我会建议 OP 完善这个问题。

标签: python list indexing


【解决方案1】:

如果您有所需的索引,为什么不试试这个:

X = [0, 1, 1, 2, 2, 3, 3, 4, 4, 5]
A = ['a', 'b', 'c', 'd', 'e', 'f']
for i in X:
    print(A[i], end=' ')

【讨论】:

  • 谢谢。但是,如果我需要超过 1000 个符号的列表,我如何创建 X = [0, 1, 1, 2, 2, 3, 3, 4, 4, 5]。这 A = ['a', 'b', 'c', 'd', 'e', 'f'] 就是例子。我有一个超过 1000 个元素的列表。
【解决方案2】:

使用列表推导提取与索引对应的值。

X = [0, 1, 1, 2, 2, 3, 3, 4, 4, 5]
A = ['a', 'b', 'c', 'd', 'e', 'f'] 
new_list = [A[x] for x in X]

更新
How to make a flat list out of a list of lists用于扁平化嵌套列表

list_of_list = [[x,x] for x in range(1,len(A))]

new_list = [0]+[item for sublist in list_of_list for item in sublist]

【讨论】:

  • 谢谢。但是,如果我需要超过 1000 个符号的列表,我如何创建 X = [0, 1, 1, 2, 2, 3, 3, 4, 4, 5]。这 A = ['a', 'b', 'c', 'd', 'e', 'f'] 就是例子。我有一个超过 1000 个元素的列表。
  • 尝试更新答案
  • 顺便说一句,您可以 from itertools import repeat 然后列表理解将是 lst = [0] + [r for i in range(1, 10) for r in repeat(i, times=2)] 而不是这两个,这将稍微提高内存效率
  • 谢谢!你的建议帮助了我!我怎样才能“喜欢”你的回复?
猜你喜欢
  • 2010-09-25
  • 2021-12-05
  • 2022-10-25
  • 2019-03-03
  • 1970-01-01
  • 1970-01-01
  • 2016-02-21
  • 1970-01-01
  • 2015-05-21
相关资源
最近更新 更多