我正在尝试附加另一个列表的索引列表。
我有一个带有随机数的列表,需要创建另一个列表,其中包含第一个列表的索引。
我的代码就是这样:
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
我在做什么错了?
答案 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