Stack上有一些相关的问题,但我想尽可能清楚。我正在使用Python 3
如果我有一个列表$('a').attr('href', 'your new url')
,并且使用以下代码:
N
我得到一个N = [1,2,3,4,6,7,8]
for x in N:
N[x] = N[x] * -1
return N
。我知道您不应该在遍历列表时添加和删除元素,但是我想清楚地定义为什么上面的示例不起作用,对我来说似乎应该没有问题。在第一次迭代中,Index out of range error
的评估结果应为x
。因此,如果我想编辑1
,我不明白为什么我无法编辑。
请注意,N[1]
是执行此操作的正确方法。
答案 0 :(得分:2)
使用enumerate
例如:
N = [1,2,3,4,6,7,8]
for x, value in enumerate(N):
N[x] = value * -1
print(N)
或列表理解。
例如:
N = [x * -1 for x in N]
答案 1 :(得分:1)
在for x in N:
中,x
接受N
中的每个值,然后将其用作索引。 Python中的列表是0索引的,因此到达列表末尾并尝试访问N[8]
(不存在)时,您会得到一个索引超出范围错误。您可以改用for x in range(len(N)):
。
答案 2 :(得分:0)
这里的问题实际上有点不同:您对待列表的成员就像他们是列表的 indices 一样。由于N[8]
不存在,因此这就是您的错误出处。我认为您的意思是:
N = [1,2,3,4,6,7,8]
for x in range(len(N)):
N[x] = N[x] * -1
return N
答案 3 :(得分:0)
您用错误的方式枚举
N = [1,2,3,4,6,7,8]
for i, x in enumerate(N):
N[i] = N[i] * -1
return N
答案 4 :(得分:0)
在第一次迭代中,<input type="number" class="form-control" style="margin:5px;width:100px;text-align:center;display:inline-block;text-align:center" ng-model="matrix[m]">
等于x=1
,因此您的新N[1]
变为2
= N[1]
。现在,由于您正在使用2 * -1
,因此-2
为x
时,您的代码将尝试访问8
,但是由于for x in N
的长度为N[8]
,索引从N
开始,一直上升到8
。因此,没有索引0
,因此会出现错误7
答案 5 :(得分:0)
使用好的lambda 或列表理解中的特定可调用项:
lambda:
N = [1,2,3,4,6,7,8]
M = [(lambda x:-x)(element) for element in N]
print(M)
可调用/功能:
def negate(x):
return -x
N = [1,2,3,4,6,7,8]
M = [negate(element) for element in N]
print(M)
答案 6 :(得分:0)
在您的代码中-
$jobdesc = '<p> Hello test</p><p><br data-mce-bogus="1"></p><p> Hello test</p><p><br data-mce-bogus="1"></p><p> Hello test</p><p><br data-mce-bogus="1"></p><p> Hello test</p><p><br data-mce-bogus="1"></p><p> Hello test</p><p><br data-mce-bogus="1"></p><p> Hello test</p>';
$jobdesc = $jobdesc.replace('/<p><br data-mce-bogus="1"></p>/g', '');
访问方式是-
N = [1,2,3,4,6,7,8]
for x in N:
# x will be 1, 2, 3, 4
但是索引从0到n-1,其中n-1是最后一个元素。同样,在您的列表中,您缺少N[x]
,因此索引将发生严重变化。如果您有
5
您的代码可以正常工作。但是由于并非如此,因此您必须像-
一样使用N = [1,2,3,4,5,6,7,8]
range