Python-从另一个列表获取所有索引

时间:2018-11-06 19:16:33

标签: python

我正在尝试附加另一个列表的索引列表。

我有一个带有随机数的列表,需要创建另一个列表,其中包含第一个列表的索引。

我的代码就是这样:

from random import seed
from random import randint
seed(715)
g1 = []
g2 = []
for v in range(20328):
valor = randint(40, 220)
g1.append(valor)


for v in enumerate(g1):
    g2.append(v)

print("v g1[v] g2[v] g1[g2[v]]")
for v in [0, 1, 2, 3, 4, 5, 6, 7, 8, 9]:
    print(v, g1[v], g2[v], g1[g2[v]])

但是我收到以下错误:

print(v, g1[v], g2[v], g1[g2[v]])
TypeError: list indices must be integers or slices, not tuple

我在做什么错了?

5 个答案:

答案 0 :(得分:0)

就像桑迪普·卡达帕(Sandeep Kadapa)所说,g2变成了元组,因此请尝试做类似的事情,

list(g2)

在枚举之后和调用打印函数之前。

答案 1 :(得分:0)

您正在使用枚举用元组填充g2,枚举将为您提供索引和作为元组的值,因此,每当调用g2 [v]时,您将不仅获得索引,还将获得元组(索引,值)。如果只需要g2中的索引,则应使用类似于创建g2的内容。

for i, v in enumerate(g1):
    g2.append(i)

答案 2 :(得分:0)

也许您只需要在第二个列表中添加索引?

for index, v in enumerate(g1):
    g2.append(index)

顺便说一句,我会用类似的东西替换该功能:

g2 = list(range(len(g1))

让我知道它是否对您有用

答案 3 :(得分:0)

将您的代码集v枚举为元组。您将使用以下格式生成索引和元素:

for count, v in enumerate(g1):
    g2.append(count)

其中count将是g1的索引,而v将是该索引的元素。

答案 4 :(得分:0)

g2被设置为程序中的元组列表,而不是整数。如果使用print(g2[0])来查看里面的内容,则会得到类似g2[0]:(0, 69)的元组。这就是问题所在。

您可以使用以下任一方法解决该问题:

for v in enumerate(g1):
    g2.append(v[1])

for index, value in enumerate(g1):
    g2.append(value)

for value in g1:
    g2.append(value)

有用的资源: https://docs.python.org/3/library/functions.html#enumerate