我正在使用 python 3.6。这个程序应该将一个数组的数字的索引值存储到另一个数组中(索引从 1 开始)例如,如果数组是 [2,3,1],那么下一个应该是 [3,1, 2]..但是在实现列表时会发生变化。
我试图对第一个数组的值进行处理,但在执行逻辑时它没有被改变。
n = int(input())
arr = input()
l = list(map(int,arr.split(' ')))
arr1= l
print(l)
for i in range(0,n):
print(l[i])
arr1[l[i]-1]=i+1
print(arr1)
答案应该是 [4,1,2,3] 但答案是 [2,1,4,3]
在这里输入代码
您要求的是一组数字索引,但您的示例显示了索引 +1。坚持零索引可能会更干净。
尽管如此,如果您正在寻找一种(有点)灵活的方法,您可以使用列表理解来做这样的事情:
>>> l = [2, 3, 1]
>>> [l.index(i+1) +1 if i+1 in l else None for i in range(max(l))]
[3, 1, 2]
给定一个展开的数组,它将填充None
:
>>> l = [2, 3, 7, 1]
>>> [l.index(i+1) +1 if i+1 in l else None for i in range(max(l))]
[4, 1, 2, None, None, None, 3]
它会默默地忽略欺骗:
>>> l = [2, 2, 1, 2]
>>> [l.index(i+1) +1 if i+1 in l else None for i in range(max(l))]
[3, 1]
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句